{
  "_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" : 939532,
      "executingTimeMillis" : 939532,
      "executorUtilization" : 1.0,
      "subTaskCount" : 0,
      "waitingDurationMillis" : 5000,
      "waitingTimeMillis" : 5000
    },
    {
      
    },
    {
      "_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"
              }
            ]
          }
        },
        "origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2117,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "d7072e92635e6733552f25f526da55e2fc62412d",
            "branch" : [
              {
                "SHA1" : "d7072e92635e6733552f25f526da55e2fc62412d",
                "name" : "origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "d7072e92635e6733552f25f526da55e2fc62412d",
            "branch" : [
              {
                "SHA1" : "d7072e92635e6733552f25f526da55e2fc62412d",
                "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" : "d7072e92635e6733552f25f526da55e2fc62412d",
        "branch" : [
          {
            "SHA1" : "d7072e92635e6733552f25f526da55e2fc62412d",
            "name" : "origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://gerrit.osmocom.org/pysim"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#2117",
  "duration" : 939532,
  "estimatedDuration" : 951977,
  "executor" : None,
  "fullDisplayName" : "master-pysim #2117",
  "id" : "2117",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 2117,
  "queueId" : 102158,
  "result" : "SUCCESS",
  "timestamp" : 1777332607420,
  "url" : "https://jenkins.osmocom.org/jenkins/job/master-pysim/2117/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/batch.py",
          "pySim/esim/saip/param_source.py"
        ],
        "commitId" : "a95622a022204cc097303d203df408ea8edc6a5c",
        "timestamp" : 1777068914000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "personalization: add param_source.py, add batch.py\u000a\u000aImplement pySim.esim.saip.batch.BatchPersonalization,\u000agenerating N eSIM profiles from a preset configuration.\u000a\u000aBatch parameters can be fed by a constant, incrementing, random or from\u000aCSV rows: add pySim.esim.saip.param_source.* classes to feed such input\u000ato each of the BatchPersonalization's ConfigurableParameter instances.\u000a\u000aRelated: SYS#6768\u000aChange-Id: I01ae40a06605eb205bfb409189fcd2b3a128855a\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-04-25 05:15:14 +0700",
        "id" : "a95622a022204cc097303d203df408ea8edc6a5c",
        "msg" : "personalization: add param_source.py, add batch.py",
        "paths" : [
          {
            "editType" : "add",
            "file" : "pySim/esim/saip/batch.py"
          },
          {
            "editType" : "add",
            "file" : "pySim/esim/saip/param_source.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "ac593bb14d387003563ea17cd7d3e3ddbd693d8d",
        "timestamp" : 1777068914000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "personalization: implement reading back values from a PES\u000a\u000aImplement get_values_from_pes(), the reverse direction of apply_val():\u000aread back and return values from a ProfileElementSequence. Implement for\u000aall ConfigurableParameter subclasses.\u000a\u000aFuture: SdKey.get_values_from_pes() is reading pe.decoded[], which works\u000afine, but I07dfc378705eba1318e9e8652796cbde106c6a52 will change this\u000aimplementation to use the higher level ProfileElementSD members.\u000a\u000aImplementation detail:\u000a\u000aImplement get_values_from_pes() as classmethod that returns a generator.\u000aSubclasses should yield all occurences of their parameter in a given\u000aPES.\u000a\u000aFor example, the ICCID can appear in multiple places.\u000aIccid.get_values_from_pes() yields all of the individual values. A set()\u000aof the results quickly tells whether the PES is consistent.\u000a\u000aRationales for reading back values:\u000a\u000aThis allows auditing an eSIM profile, particularly for producing an\u000aoutput.csv from a batch personalization (that generated lots of random\u000akey material which now needs to be fed to an HLR...).\u000a\u000aReading back from a binary result is more reliable than storing the\u000avalues that were fed into a personalization.\u000aBy auditing final DER results with this code, I discovered:\u000a- \"oh, there already was some key material in my UPP template.\"\u000a- \"all IMSIs ended up the same, forgot to set up the parameter.\"\u000a- the SdKey.apply() implementations currently don't work, see\u000a  I07dfc378705eba1318e9e8652796cbde106c6a52 for a fix.\u000a\u000aChange-Id: I234fc4317f0bdc1a486f0cee4fa432c1dce9b463\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-04-25 05:15:14 +0700",
        "id" : "ac593bb14d387003563ea17cd7d3e3ddbd693d8d",
        "msg" : "personalization: implement reading back values from a PES",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "pySim/esim/saip/personalization.py"
        ],
        "commitId" : "d7072e92635e6733552f25f526da55e2fc62412d",
        "timestamp" : 1777068914000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "personalization: indicate default ParamSource per ConfigurableParameter\u000a\u000aAdd default_source class members pointing to ParamSource classes to all\u000aConfigurableParameter subclasses.\u000a\u000aThis is useful to automatically set up a default ParamSource for a given\u000aConfigurableParameter subclass, during user interaction to produce a\u000abatch personalization.\u000a\u000aFor example, if the user selects a Pin1 parameter, a calling program can\u000aimplicitly set this to a RandomDigitSource, which will magically make it\u000awork the way that most users need.\u000a\u000aBTW, default_source and default_value can be combined to configure a\u000amatching ParamSource instance:\u000a\u000a  my_source = MyParam.default_source.from_str( MyParam.default_value )\u000a\u000aChange-Id: Ie58d13bce3fa1aa2547cf3cee918c2f5b30a8b32\u000aJenkins: skip-card-test\u000a",
        "date" : "2026-04-25 05:15:14 +0700",
        "id" : "d7072e92635e6733552f25f526da55e2fc62412d",
        "msg" : "personalization: indicate default ParamSource per ConfigurableParameter",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "pySim/esim/saip/personalization.py"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
      "fullName" : "Vadim Yanitskiy"
    }
  ],
  "runs" : [
    {
      "number" : 2117,
      "url" : "https://jenkins.osmocom.org/jenkins/job/master-pysim/JOB_TYPE=card-test,a1=default,a3=default,a4=default,label=simtester/2117/"
    },
    {
      "number" : 2117,
      "url" : "https://jenkins.osmocom.org/jenkins/job/master-pysim/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-master/2117/"
    },
    {
      "number" : 2117,
      "url" : "https://jenkins.osmocom.org/jenkins/job/master-pysim/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-master/2117/"
    },
    {
      "number" : 2117,
      "url" : "https://jenkins.osmocom.org/jenkins/job/master-pysim/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-master/2117/"
    },
    {
      "number" : 2117,
      "url" : "https://jenkins.osmocom.org/jenkins/job/master-pysim/JOB_TYPE=test,a1=default,a3=default,a4=default,label=osmocom-master/2117/"
    },
    {
      "number" : 2112,
      "url" : "https://jenkins.osmocom.org/jenkins/job/master-pysim/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2112/"
    }
  ]
}