Maxi SMPP Sandbox

Guide

SMS Integration Tests in CI: Repeatable SMPP Testing

A practical setup for running SMS and SMPP tests on every commit, with no real traffic and no flaky results.

SMS code is often tested only by hand, because the real service costs money and cannot be controlled. A hosted SMPP sandbox changes that: your pipeline connects to it like to any SMSC, and the outcome is whatever you configured.

What makes CI tests flaky

  • Random delivery results from a real provider.
  • Shared test numbers and rate limits.
  • Waiting for reports with fixed sleeps.
  • Tests that depend on each other's traffic.

A setup that works

  1. One client account per environment. Create separate accounts, for example for CI, staging and local development, each with its own SMPP credentials. Add the connecting IP addresses of your runners where the account requires it.
  2. Deterministic schemes. For the main suite use a scheme with 100% Delivered and a short delay. Put the failure scenarios on their own accounts (see simulating delivery failures).
  3. Configuration through secrets. Pass the sandbox host, port (4444 for SMPP) and credentials as CI secrets and environment variables, never in the repository.
  4. Wait on events, not on sleep. Poll or subscribe for the delivery report with a timeout slightly above the scheme's delay.
  5. Isolate parallel jobs. If jobs run at the same time, give them separate accounts or filter by the message_id each test received, so one job never consumes another's reports.

Example workflow fragment

jobs:
  sms-integration:
    runs-on: ubuntu-latest
    env:
      SMPP_HOST: ${{ secrets.SMPP_HOST }}
      SMPP_PORT: 4444
      SMPP_SYSTEM_ID: ${{ secrets.SMPP_SYSTEM_ID }}
      SMPP_PASSWORD: ${{ secrets.SMPP_PASSWORD }}
    steps:
      - uses: actions/checkout@v4
      - run: make test-sms

What to assert

  • The bind succeeds and the right bind type is used.
  • Every submitted message gets a message_id.
  • The delivery report arrives within the timeout and is matched to the message.
  • Long and Unicode texts arrive as expected (see multipart SMS).
  • Your system does the right thing in the failure scenarios.

Check the amount of clients and the speed your pipeline needs against the plans: Light supports up to 3 clients, Medium up to 10, and Super 10 and more.

Want to try this against a real SMPP endpoint? Register for the sandbox and use it free for 3 days, or tell us about your scenario.

Keep reading

Ready to test your SMS traffic?

Get your SMPP sandbox in minutes and use it free for 3 days - or tell us what you are building and we will help you choose a plan.