{
  "_class" : "hudson.matrix.MatrixBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.SCMTrigger$SCMTriggerCause",
          "shortDescription" : "Started by an SCM change"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.model.ParametersAction",
      "parameters" : [
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "BRANCH",
          "value" : "master"
        },
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "EMAIL_NOTIFICATIONS",
          "value" : "jenkins-notifications@lists.osmocom.org laforge@gnumonks.org"
        }
      ]
    },
    {
      "_class" : "jenkins.metrics.impl.TimeInQueueAction",
      "blockedDurationMillis" : 0,
      "blockedTimeMillis" : 0,
      "buildableDurationMillis" : 0,
      "buildableTimeMillis" : 0,
      "buildingDurationMillis" : 947767,
      "executingTimeMillis" : 947767,
      "executorUtilization" : 1.0,
      "subTaskCount" : 0,
      "waitingDurationMillis" : 5411,
      "waitingTimeMillis" : 5411
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/pmaier/fixgr" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2045,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "e5f56dd35f1b2347a59f88b401b59997798fff67",
            "branch" : [
              {
                "SHA1" : "e5f56dd35f1b2347a59f88b401b59997798fff67",
                "name" : "refs/remotes/origin/pmaier/fixgr"
              }
            ]
          },
          "revision" : {
            "SHA1" : "e5f56dd35f1b2347a59f88b401b59997798fff67",
            "branch" : [
              {
                "SHA1" : "e5f56dd35f1b2347a59f88b401b59997798fff67",
                "name" : "refs/remotes/origin/pmaier/fixgr"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/rcp" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2131,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "ba01cb7afffa0141e4e9476d566366801773c416",
            "branch" : [
              {
                "SHA1" : "ba01cb7afffa0141e4e9476d566366801773c416",
                "name" : "refs/remotes/origin/pmaier/rcp"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ba01cb7afffa0141e4e9476d566366801773c416",
            "branch" : [
              {
                "SHA1" : "ba01cb7afffa0141e4e9476d566366801773c416",
                "name" : "refs/remotes/origin/pmaier/rcp"
              }
            ]
          }
        },
        "origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2141,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
            "branch" : [
              {
                "SHA1" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
                "name" : "origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
            "branch" : [
              {
                "SHA1" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
                "name" : "origin/master"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/ara-m" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1320,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
            "branch" : [
              {
                "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
                "name" : "refs/remotes/origin/pmaier/ara-m"
              }
            ]
          },
          "revision" : {
            "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
            "branch" : [
              {
                "SHA1" : "8f289234f74045496c3752bf1bb9397302f3e912",
                "name" : "refs/remotes/origin/pmaier/ara-m"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/keepfiles" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1353,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
            "branch" : [
              {
                "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
                "name" : "refs/remotes/origin/pmaier/keepfiles"
              }
            ]
          },
          "revision" : {
            "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
            "branch" : [
              {
                "SHA1" : "3d815859830197b9c55e0a49a1bd2532f71285e1",
                "name" : "refs/remotes/origin/pmaier/keepfiles"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/fixapdu" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1421,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
            "branch" : [
              {
                "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
                "name" : "refs/remotes/origin/pmaier/fixapdu"
              }
            ]
          },
          "revision" : {
            "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
            "branch" : [
              {
                "SHA1" : "568e8ae9b817ec2473907bfdd30870410890ffb0",
                "name" : "refs/remotes/origin/pmaier/fixapdu"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/aramtest" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1467,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
            "branch" : [
              {
                "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
                "name" : "refs/remotes/origin/pmaier/aramtest"
              }
            ]
          },
          "revision" : {
            "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
            "branch" : [
              {
                "SHA1" : "6a555ac5ccad9ee2cae5e0ba247990f824f8e9b6",
                "name" : "refs/remotes/origin/pmaier/aramtest"
              }
            ]
          }
        },
        "refs/remotes/origin/osmith/wip" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 1816,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
            "branch" : [
              {
                "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          },
          "revision" : {
            "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
            "branch" : [
              {
                "SHA1" : "e4ea1c997348370ba1d7415bfd926ac873b58c87",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          }
        },
        "refs/remotes/origin/pmaier/otatest" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2022,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "f57f047c627392c40fbe349b1a73ccebe05dc005",
            "branch" : [
              {
                "SHA1" : "f57f047c627392c40fbe349b1a73ccebe05dc005",
                "name" : "refs/remotes/origin/pmaier/otatest"
              }
            ]
          },
          "revision" : {
            "SHA1" : "f57f047c627392c40fbe349b1a73ccebe05dc005",
            "branch" : [
              {
                "SHA1" : "f57f047c627392c40fbe349b1a73ccebe05dc005",
                "name" : "refs/remotes/origin/pmaier/otatest"
              }
            ]
          }
        },
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 402,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
            "branch" : [
              {
                "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
            "branch" : [
              {
                "SHA1" : "4f888a0414101dee4f20aa12579491fcc71707b3",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
        "branch" : [
          {
            "SHA1" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
            "name" : "origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://gerrit.osmocom.org/pysim"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#2141",
  "duration" : 947767,
  "estimatedDuration" : 948120,
  "executor" : None,
  "fullDisplayName" : "master-pysim #2141",
  "id" : "2141",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 2141,
  "queueId" : 116573,
  "result" : "SUCCESS",
  "timestamp" : 1778678406602,
  "url" : "https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-pysim/2141/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/card_key_provider.py",
          "pySim-shell.py"
        ],
        "commitId" : "3cd5c41fb4879d630123240033ff2b852d8a5796",
        "timestamp" : 1778255673000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "card_key_provider: move boiler-plate code into helper functions\u000a\u000ain pySim-shell.py we add the commandline options for the card key\u000aprovider and do the setup accordingly. Let's put this boilerplate\u000acode into helper functions instead, so that we can re-use it in\u000aother pySim programs as well. Let's use pySim.transport as a\u000apattern.\u000a\u000aRelated: SYS#6959\u000aChange-Id: I6d095cbb644e608f4a751a1d0749b1484cdc781d\u000a",
        "date" : "2026-05-08 17:54:33 +0200",
        "id" : "3cd5c41fb4879d630123240033ff2b852d8a5796",
        "msg" : "card_key_provider: move boiler-plate code into helper functions",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/card_key_provider.py"
          },
          {
            "editType" : "edit",
            "file" : "pySim-shell.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "tests/unittests/test_card_key_provider.py",
          "pySim/card_key_provider.py"
        ],
        "commitId" : "58a324126e8227d3d63dd581dcbbd8b878d08f14",
        "timestamp" : 1778255673000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "card_key_provider: pass CardKeyFieldCryptor to constructor\u000a\u000aWe currently create the CardKeyFieldCryptor object inside the constructor\u000aof the concrete CardKeyProvider classes. There is currently no problem\u000awith that, but when we create the CardKeyFieldCryptor object first and\u000athen pass it as parameter to the constructor, we gain more flexibility\u000ain case we want to support other CardKeyFieldCryptor variants in the\u000afuture.\u000a\u000aRelated: SYS#6959\u000aChange-Id: If43552740aadacab9126f8a002749a9582eef8f4\u000a",
        "date" : "2026-05-08 17:54:33 +0200",
        "id" : "58a324126e8227d3d63dd581dcbbd8b878d08f14",
        "msg" : "card_key_provider: pass CardKeyFieldCryptor to constructor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/card_key_provider.py"
          },
          {
            "editType" : "edit",
            "file" : "tests/unittests/test_card_key_provider.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/card_key_provider.py"
        ],
        "commitId" : "7d11f917785a88689e67255d786f1191e04b3ff4",
        "timestamp" : 1778255673000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "card_key_provider: add a static method to parse --column-keys args\u000a\u000aThe contents of the --column-keys arguments are currently parsed\u000ain init_card_key_provider. Let's add a static method in\u000aCardKeyFieldCryptor to simplify re-usage of the CardKeyFieldCryptor\u000a\u000aRelated: SYS#6959\u000aChange-Id: Ic955f271b1de1b1b855b21c82ed10343044e45fa\u000a",
        "date" : "2026-05-08 17:54:33 +0200",
        "id" : "7d11f917785a88689e67255d786f1191e04b3ff4",
        "msg" : "card_key_provider: add a static method to parse --column-keys args",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/card_key_provider.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/log.py"
        ],
        "commitId" : "66d3b54f923788aece1063918ed15e12e97b3140",
        "timestamp" : 1778255673000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "pySimLogger: fix default log format string\u000a\u000aIn format string we prepend when we log in verbose mode. We use %(module)s\u000aas format string quaifier. This qualifier is replaced with the name of the\u000amodule from where the logger was called. This is mostly equal to the logger\u000aname (__name__) we pass when we create the logger.\u000a\u000aHowever, this is not the behavior we actually want. We want to log the\u000alogger name that we passed when the logger was created. For this, we must\u000ause %(name)s as qualifier.\u000a\u000aRelated: SYS#6959\u000aChange-Id: I3951a70ad6ce864a7158b093cba46ae9fc1cb5bd\u000a",
        "date" : "2026-05-08 17:54:33 +0200",
        "id" : "66d3b54f923788aece1063918ed15e12e97b3140",
        "msg" : "pySimLogger: fix default log format string",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/log.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/app.py"
        ],
        "commitId" : "810c51c38fe0f552eecb032857e81964d84b72cb",
        "timestamp" : 1778255673000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "pySim/app: use pySimLogger instead of print\u000a\u000alet's replace the stray print statements with proper logger calls.\u000a\u000aRelated: SYS#6959\u000aChange-Id: I95b4536cc8853e7ba6a5dd573b903dfb85e56b9a\u000a",
        "date" : "2026-05-08 17:54:33 +0200",
        "id" : "810c51c38fe0f552eecb032857e81964d84b72cb",
        "msg" : "pySim/app: use pySimLogger instead of print",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/app.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/filesystem.py"
        ],
        "commitId" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
        "timestamp" : 1778255673000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
          "fullName" : "pmaier@sysmocom.de"
        },
        "authorEmail" : "pmaier@sysmocom.de",
        "comment" : "pySim/filesystem: use pySimLogger instead of print\u000a\u000alet's replace the stray print statements with proper logger calls.\u000a\u000aRelated: SYS#6959\u000aChange-Id: I3a7188ad33706df66b2113e15cc7d06004c9bc39\u000a",
        "date" : "2026-05-08 17:54:33 +0200",
        "id" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
        "msg" : "pySim/filesystem: use pySimLogger instead of print",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/filesystem.py"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/pmaier",
      "fullName" : "pmaier@sysmocom.de"
    }
  ],
  "runs" : [
    {
      "number" : 2141,
      "url" : "https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-pysim/JOB_TYPE=card-test,a1=default,a3=default,a4=default,label=simtester/2141/"
    },
    {
      "number" : 2141,
      "url" : "https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-pysim/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-master/2141/"
    },
    {
      "number" : 2141,
      "url" : "https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-pysim/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-master/2141/"
    },
    {
      "number" : 2141,
      "url" : "https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-pysim/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-master/2141/"
    },
    {
      "number" : 2141,
      "url" : "https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-pysim/JOB_TYPE=test,a1=default,a3=default,a4=default,label=osmocom-master/2141/"
    },
    {
      "number" : 2112,
      "url" : "https://jenkins.osmocom.org/jenkins/view/Sysmocom/job/master-pysim/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2112/"
    }
  ]
}