{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.TimerTrigger$TimerTriggerCause",
          "shortDescription" : "Started by timer"
        }
      ]
    },
    {
      "_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"
        }
      ]
    },
    {
      "_class" : "jenkins.metrics.impl.TimeInQueueAction",
      "blockedDurationMillis" : 0,
      "blockedTimeMillis" : 0,
      "buildableDurationMillis" : 13,
      "buildableTimeMillis" : 13,
      "buildingDurationMillis" : 472776,
      "executingTimeMillis" : 472776,
      "executorUtilization" : 1.0,
      "subTaskCount" : 0,
      "waitingDurationMillis" : 2,
      "waitingTimeMillis" : 2
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 595,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
            "branch" : [
              {
                "SHA1" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
                "name" : "origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
            "branch" : [
              {
                "SHA1" : "ef58c94dfeaa489085846ba40ae6ac90903df12e",
                "name" : "origin/master"
              }
            ]
          }
        },
        "refs/remotes/origin/osmith/wip" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 5,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "b52b9704ed57386959a73c98e946c756e0188e6c",
            "branch" : [
              {
                "SHA1" : "b52b9704ed57386959a73c98e946c756e0188e6c",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          },
          "revision" : {
            "SHA1" : "b52b9704ed57386959a73c98e946c756e0188e6c",
            "branch" : [
              {
                "SHA1" : "b52b9704ed57386959a73c98e946c756e0188e6c",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          }
        },
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 253,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d",
            "branch" : [
              {
                "SHA1" : "c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d",
            "branch" : [
              {
                "SHA1" : "c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d",
                "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" : null,
  "displayName" : "#595",
  "duration" : 472776,
  "estimatedDuration" : 472616,
  "executor" : null,
  "fullDisplayName" : "simtester-sanitize #595",
  "id" : "595",
  "inProgress" : false,
  "keepLog" : false,
  "number" : 595,
  "queueId" : 116980,
  "result" : "SUCCESS",
  "timestamp" : 1778719381110,
  "url" : "https://jenkins.osmocom.org/jenkins/job/simtester-sanitize/595/",
  "builtOn" : "simtester",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim-shell.py",
          "pySim/card_key_provider.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-shell.py"
          },
          {
            "editType" : "edit",
            "file" : "pySim/card_key_provider.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" : "tests/unittests/test_card_key_provider.py"
          },
          {
            "editType" : "edit",
            "file" : "pySim/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"
    }
  ]
}