{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.SCMTrigger$SCMTriggerCause",
          "shortDescription" : "Started by an SCM change"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "jenkins.metrics.impl.TimeInQueueAction",
      "blockedDurationMillis" : 0,
      "blockedTimeMillis" : 0,
      "buildableDurationMillis" : 1,
      "buildableTimeMillis" : 1,
      "buildingDurationMillis" : 1284,
      "executingTimeMillis" : 1284,
      "executorUtilization" : 1.0,
      "subTaskCount" : 0,
      "waitingDurationMillis" : 8880,
      "waitingTimeMillis" : 8880
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 3199,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "354bd4905fa097fe4653a47ca44da1719e876d0f",
            "branch" : [
              {
                "SHA1" : "354bd4905fa097fe4653a47ca44da1719e876d0f",
                "name" : "origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "354bd4905fa097fe4653a47ca44da1719e876d0f",
            "branch" : [
              {
                "SHA1" : "354bd4905fa097fe4653a47ca44da1719e876d0f",
                "name" : "origin/master"
              }
            ]
          }
        },
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2694,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "7fb8722448b9c523cdd1edda8f89c100880316be",
            "branch" : [
              {
                "SHA1" : "7fb8722448b9c523cdd1edda8f89c100880316be",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "7fb8722448b9c523cdd1edda8f89c100880316be",
            "branch" : [
              {
                "SHA1" : "7fb8722448b9c523cdd1edda8f89c100880316be",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "354bd4905fa097fe4653a47ca44da1719e876d0f",
        "branch" : [
          {
            "SHA1" : "354bd4905fa097fe4653a47ca44da1719e876d0f",
            "name" : "origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://gerrit.osmocom.org/osmo-ttcn3-hacks"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#3199",
  "duration" : 1284,
  "estimatedDuration" : 1649,
  "executor" : None,
  "fullDisplayName" : "registry-trigger-osmo-ttcn3-hacks #3199",
  "id" : "3199",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 3199,
  "queueId" : 64028,
  "result" : "SUCCESS",
  "timestamp" : 1773834189827,
  "url" : "https://jenkins.osmocom.org/jenkins/job/registry-trigger-osmo-ttcn3-hacks/3199/",
  "builtOn" : "build4-deb12build-ansible",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "s1gw/S1GW_ConnHdlr.ttcn",
          "s1gw/S1GW_Tests.ttcn",
          "s1gw/S1AP_Server.ttcn",
          "s1gw/expected-results.xml",
          "s1gw/osmo-s1gw.config"
        ],
        "commitId" : "a58cc83df28411dd5df338dd174a0d23fd3306ba",
        "timestamp" : 1773834141000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "s1gw: initial testcases for MME pooling\u000a\u000aThree test cases covering the MME pool selection logic in OsmoS1GW:\u000a\u000a* TC_mme_pool_reject_fallback: S1GW falls back to the next pool entry\u000a  when the first MME rejects S1SetupReq with S1SetupFailure.\u000a* TC_mme_pool_timeout_fallback: S1GW falls back when the first MME\u000a  does not respond to S1SetupReq within the timeout.\u000a* TC_mme_pool_all_reject: all pool entries reject S1SetupReq; S1GW\u000a  must send S1SetupFailure to the eNB and tear down the connection.\u000a\u000aInfrastructure added to support these tests:\u000a\u000a* S1AP_Server.ttcn: S1AP_ServerList type; directed register/unregister\u000a  helpers (f_ConnHdlr_s1ap_register_to / _unregister_from) for use\u000a  when multiple S1AP_Server_CT instances are active simultaneously.\u000a* S1GW_ConnHdlr.ttcn: f_ConnHdlr_s1ap_setup_pool() drives the pool\u000a  setup sequence: pre-registers with all servers, sends S1SetupReq once\u000a  (S1GW re-transmits it per-MME), then iterates through the expected\u000a  behaviors (ACCEPT / REJECT / TIMEOUT) waiting for each server in turn.\u000a* S1GW_Tests.ttcn: f_init_s1ap_srv(N) starts N MME emulators on\u000a  consecutive IP addresses; f_TC_exec_pool() orchestrates pool tests.\u000a* osmo-s1gw.config: a 'mme_pool' section with three entries is added\u000a  alongside the existing sctp_client section.  Older OsmoS1GW (without\u000a  pooling support) will use sctp_client to connect to a single MME and\u000a  the pool test cases will simply fail, as expected.  Newer OsmoS1GW\u000a  will use mme_pool and all three test cases will pass.\u000a\u000aChange-Id: Ib8fd62e4352e3055971a669b8b363078bcd95d8d\u000aRelated: SYS#7052\u000a",
        "date" : "2026-03-18 11:42:21 +0000",
        "id" : "a58cc83df28411dd5df338dd174a0d23fd3306ba",
        "msg" : "s1gw: initial testcases for MME pooling",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "s1gw/osmo-s1gw.config"
          },
          {
            "editType" : "edit",
            "file" : "s1gw/S1AP_Server.ttcn"
          },
          {
            "editType" : "edit",
            "file" : "s1gw/S1GW_Tests.ttcn"
          },
          {
            "editType" : "edit",
            "file" : "s1gw/S1GW_ConnHdlr.ttcn"
          },
          {
            "editType" : "edit",
            "file" : "s1gw/expected-results.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "s1gw/expected-results.xml",
          "s1gw/S1GW_ConnHdlr.ttcn",
          "s1gw/S1GW_Tests.ttcn"
        ],
        "commitId" : "d98284f3cdbce0fdf70da8d17b72e74107c9d3f7",
        "timestamp" : 1773834141000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "s1gw: add testcases for impatient eNB during MME pool selection\u000a\u000aTwo new test cases covering scenarios where the eNB disconnects before\u000aS1 setup completes, targeting specific states of the enb_proxy FSM:\u000a\u000a* TC_mme_pool_enb_disc_wait_s1setup_req: eNB connects but disconnects\u000a  before sending S1SetupReq (enb_proxy in wait_s1setup_req).  No MME\u000a  connection is ever attempted; S1GW must handle the disconnect cleanly.\u000a\u000a* TC_mme_pool_enb_disc_wait_s1setup_rsp: eNB sends S1SetupReq, S1GW\u000a  forwards it to the first pool MME (enb_proxy in wait_s1setup_rsp),\u000a  then eNB disconnects before the response arrives.  S1GW must detect\u000a  the eNB disconnect and close the open MME connection in response.\u000a\u000aA new helper S1GW_ConnHdlr.f_ConnHdlr_s1ap_close() is added for these\u000atests: unlike f_ConnHdlr_s1ap_disconnect(), it closes the eNB-side\u000asocket without waiting for an S1APSRV_EVENT_CONN_DOWN from a pool\u000aserver (since in these scenarios either no MME connection exists\u000ayet, or the CONN_DOWN is captured by the test body directly).\u000a\u000aChange-Id: I5d27cdafcb9f595a2d3db59beff17cd55de2539e\u000aRelated: SYS#7052\u000a",
        "date" : "2026-03-18 11:42:21 +0000",
        "id" : "d98284f3cdbce0fdf70da8d17b72e74107c9d3f7",
        "msg" : "s1gw: add testcases for impatient eNB during MME pool selection",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "s1gw/expected-results.xml"
          },
          {
            "editType" : "edit",
            "file" : "s1gw/S1GW_ConnHdlr.ttcn"
          },
          {
            "editType" : "edit",
            "file" : "s1gw/S1GW_Tests.ttcn"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "s1gw/expected-results.xml",
          "s1gw/S1GW_REST_Types.ttcn",
          "s1gw/S1GW_Tests.ttcn"
        ],
        "commitId" : "76f24325bcc319ef0ae27e5190e957db8bd42fbe",
        "timestamp" : 1773834141000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "s1gw: add tests for MME registry REST procedures\u000a\u000aAdd three test cases exercising the S1GW REST interface for MME pool\u000amanagement.  The REST TCs are gated on the mp_rest_enable module\u000aparameter in the control block.\u000a\u000aTC_rest_mme_list: query the MME pool list via REST and verify it\u000amatches the three static entries from the 'mme_pool' section in\u000aosmo-s1gw.config (mme0/mme1/mme2 with their respective addresses).\u000a\u000aTC_rest_mme_add_del: add a new MME entry at runtime via REST, verify\u000ait appears in both the list and individual GET responses, then delete\u000ait and confirm it is gone.\u000a\u000aTC_rest_mme_del_fallback: delete mme0 from the pool at runtime and\u000averify that a connecting eNB is routed directly to mme1, skipping the\u000adeleted entry.  The pool is restored to its original state afterwards\u000avia f_REST_mme_pool_restore().\u000a\u000aAlso add:\u000a* {ts,tr}_MmeItem templates to S1GW_REST_Types.ttcn\u000a* f_REST_mme_find(): returns the integer index of a named entry in a\u000a  MmeList, or -1 if not found; used for both presence and absence checks\u000a* f_REST_mme_pool_restore(): deletes all current entries and re-adds\u000a  mme0/mme1/mme2 in original order to keep pool state predictable\u000a  across test cases\u000a\u000aChange-Id: I260bc987ab8ae0ecb547d0b69b261fd97c5c9c23\u000aRelated: SYS#7052\u000a",
        "date" : "2026-03-18 11:42:21 +0000",
        "id" : "76f24325bcc319ef0ae27e5190e957db8bd42fbe",
        "msg" : "s1gw: add tests for MME registry REST procedures",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "s1gw/expected-results.xml"
          },
          {
            "editType" : "edit",
            "file" : "s1gw/S1GW_Tests.ttcn"
          },
          {
            "editType" : "edit",
            "file" : "s1gw/S1GW_REST_Types.ttcn"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "s1gw/S1GW_Tests.cfg",
          "s1gw/S1GW_Tests.ttcn"
        ],
        "commitId" : "d12d5a5dfd9dfd41fc6c42291a0ad4b8f951129d",
        "timestamp" : 1773834141000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "s1gw: enable the REST interface, fix wrong REST port\u000a\u000aREST had been disabled because only nightly builds supported it.\u000aThe latest stable release (v0.4.0) also supports the REST interface,\u000aso let's enable it unconditionally by removing the mp_rest_enable.\u000a\u000aAlso fix the REST port: mp_rest_port was incorrectly set\u000ato 8125 (the StatsD port) instead of the actual REST port 8080.\u000a\u000aChange-Id: I012749076c652ab541e569026eb01c696ad5adc8\u000aRelated: SYS#7052, SYS#7066\u000a",
        "date" : "2026-03-18 11:42:21 +0000",
        "id" : "d12d5a5dfd9dfd41fc6c42291a0ad4b8f951129d",
        "msg" : "s1gw: enable the REST interface, fix wrong REST port",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "s1gw/S1GW_Tests.cfg"
          },
          {
            "editType" : "edit",
            "file" : "s1gw/S1GW_Tests.ttcn"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "s1gw/S1GW_ConnHdlr.ttcn",
          "s1gw/S1GW_Tests.ttcn"
        ],
        "commitId" : "d91406c563e79f0cd95f83da134e4312a992b7da",
        "timestamp" : 1773834141000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "s1gw: use REST interface to check PFCP assoc state\u000a\u000aIt's quicker to query the IUT using the REST interface rather than\u000awaiting for StatsD metric \"gauge.pfcp.associated.value\" to be received.\u000aAs a bonus, we \"learn\" the local/remote RTS from the S1GW, which can\u000abe used in new PFCP related testcases.\u000a\u000aChange-Id: Iec7594e79f533b08ee93b443a39cb9c8ff03da43\u000a",
        "date" : "2026-03-18 11:42:21 +0000",
        "id" : "d91406c563e79f0cd95f83da134e4312a992b7da",
        "msg" : "s1gw: use REST interface to check PFCP assoc state",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "s1gw/S1GW_ConnHdlr.ttcn"
          },
          {
            "editType" : "edit",
            "file" : "s1gw/S1GW_Tests.ttcn"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "s1gw/README.md"
        ],
        "commitId" : "354bd4905fa097fe4653a47ca44da1719e876d0f",
        "timestamp" : 1773834141000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "s1gw: add README.md\u000a\u000aChange-Id: Ib5c1326c4260bf552b561a42f7ff9d3f28f89579\u000a",
        "date" : "2026-03-18 11:42:21 +0000",
        "id" : "354bd4905fa097fe4653a47ca44da1719e876d0f",
        "msg" : "s1gw: add README.md",
        "paths" : [
          {
            "editType" : "add",
            "file" : "s1gw/README.md"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
      "fullName" : "Vadim Yanitskiy"
    }
  ]
}