git.delta.rocks / jrsonnet / refs/commits / 3ab5bdb7f60f

difftreelog

ci more realworld benchmarks

yvoquykvYaroslav Bolyukin2026-05-07parent: #97dec27.patch.diff
in: master

12 files changed

modifiedflake.nixdiffbeforeafterboth
--- a/flake.nix
+++ b/flake.nix
@@ -218,6 +218,9 @@
         in
         {
           legacyPackages = {
+            fetchJrq = pkgs.callPackage ./nix/fetch-jrq.nix {
+              inherit (self'.packages) jrsonnet;
+            };
             release = optionalAttrs pkgs.stdenv.hostPlatform.isLinux (
               {
                 jrsonnet-linux-glibc = self'.packages.jrsonnet;
@@ -254,6 +257,7 @@
             );
             benchmarks = optionalAttrs (system == "x86_64-linux" || system == "aarch64-linux") {
               default = pkgs.callPackage ./nix/benchmarks.nix {
+                inherit (config.legacyPackages) fetchJrq;
                 inherit (config.legacyPackages.jsonnetImpls)
                   go-jsonnet
                   sjsonnet
@@ -268,6 +272,7 @@
                 ];
               };
               quick = pkgs.callPackage ./nix/benchmarks.nix {
+                inherit (config.legacyPackages) fetchJrq;
                 inherit (config.legacyPackages.jsonnetImpls)
                   go-jsonnet
                   sjsonnet
@@ -283,6 +288,7 @@
                 ];
               };
               against-release = pkgs.callPackage ./nix/benchmarks.nix {
+                inherit (config.legacyPackages) fetchJrq;
                 inherit (config.legacyPackages.jsonnetImpls)
                   go-jsonnet
                   sjsonnet
@@ -305,6 +311,7 @@
                 ];
               };
               quick-against-release = pkgs.callPackage ./nix/benchmarks.nix {
+                inherit (config.legacyPackages) fetchJrq;
                 inherit (config.legacyPackages.jsonnetImpls)
                   go-jsonnet
                   sjsonnet
modifiednix/benchmarks.nixdiffbeforeafterboth
--- a/nix/benchmarks.nix
+++ b/nix/benchmarks.nix
@@ -1,10 +1,9 @@
 {
   lib,
   runCommand,
-  jsonnet-bundler,
-  cacert,
   stdenv,
   fetchFromGitHub,
+  fetchJrq,
   go-jsonnet,
   sjsonnet,
   cpp-jsonnet,
@@ -23,29 +22,16 @@
     rev = "bc305df3fe587960f7635f0185571500e5988475";
     hash = "sha256-4EKB1b2o4/qtYQ+nqbbs621OJrtjApsAWEBcw5EjrYc=";
   };
-  kubePrometheusBench =
-    let
-      src = fetchFromGitHub {
-        owner = "prometheus-operator";
-        repo = "kube-prometheus";
-        rev = "d3889807798d1697ea0691f10caf1b6a1997a8bd";
-        hash = "sha256-TeYWHzoZAmDp2PzT7EH8XRUcvb3tR8Qfxel7o2QBvIM=";
-      };
-    in
-    runCommand "kube-prometheus-vendor"
-      {
-        outputHash = "sha256-AGc0dHlD/Ld7I5b1+gOotzJkYrn+bB1VjISdD5NITtw=";
-        outputHashMode = "recursive";
-        buildInputs = [ cacert ];
-      }
-      ''
-        mkdir -p $out
-        cp -r ${src}/* $out/
-        cd $out
-        chmod u+w jsonnetfile.lock.json
-        mkdir vendor
-        ${jsonnet-bundler}/bin/jb install
-      '';
+  realworldVendor = fetchJrq {
+    name = "realworld-vendor";
+    lockfile = ../tests/realworld/jsonnetfile.lock.json;
+    vendorHash = "sha256-6tXi6bRw77YKB17PhSpJnVYQcsGOvB8sgjKIrFtrwfc=";
+  };
+  realworldBench = runCommand "realworld-bench" { } ''
+    mkdir -p $out
+    cp ${../tests/realworld}/*.jsonnet ${../tests/realworld}/*.libsonnet $out/
+    cp -r ${realworldVendor} $out/vendor
+  '';
 
   # Removes outsiders from the output
   # Useful when comparing performance of different jrsonnet releases
@@ -77,8 +63,11 @@
           skipScala ? "",
           skipCpp ? "",
           skipGo ? "",
-          vendor ? "",
+          jpaths ? [ ],
         }:
+        let
+          jpathArgs = concatMapStrings (p: " -J ${p}") jpaths;
+        in
         ''
           echo >> $out
           echo "=== ${name}" >> $out
@@ -122,7 +111,7 @@
               concatStringsSep " " (
                 forEach jrsonnetVariants (
                   variant:
-                  "\"${variant.drv}/bin/jrsonnet $path${optionalString (vendor != "") " -J${vendor}"}\" -n \"Rust${
+                  "\"${variant.drv}/bin/jrsonnet $path${jpathArgs}\" -n \"Rust${
                     if variant.name != "" then " (${variant.name})" else ""
                   }\""
                 )
@@ -130,26 +119,24 @@
             } \
             ${
               optionalString (skipRustAlternative == "")
-                "\"rsjsonnet $path${
-                  optionalString (vendor != "") " -J ${vendor}"
-                }\" -n \"Rust (alternative, rsjsonnet)\""
+                "\"rsjsonnet $path${jpathArgs}\" -n \"Rust (alternative, rsjsonnet)\""
             } \
             ${
               optionalString (skipGo == "")
-                "\"go-jsonnet $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"Go\""
+                "\"go-jsonnet $path${jpathArgs}\" -n \"Go\""
             } \
             ${
               optionalString (skipScala == "")
-                "\"sjsonnet-native $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"Scala (native)\""
+                "\"sjsonnet-native $path${jpathArgs}\" -n \"Scala (native)\""
             } \
             ${
               # My aarch64-linux machine can't run graalvm image:
               # The current machine does not support all of the following CPU features that are required by the image: [FP, ASIMD, CRC32, LSE].
               optionalString (skipScala == "" && stdenv.hostPlatform.system != "aarch64-linux")
-                "\"sjsonnet-graalvm $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"Scala (GraalVM)\""
+                "\"sjsonnet-graalvm $path${jpathArgs}\" -n \"Scala (GraalVM)\""
             } \
             ${optionalString (skipCpp == "")
-              "\"jsonnet $path${optionalString (vendor != "") " -J ${vendor}"}\" -n \"C++\""
+              "\"jsonnet $path${jpathArgs}\" -n \"C++\""
             }
           cat result.adoc >> $out
         '';
@@ -196,10 +183,36 @@
         skipGo = skipSlow;
       }}
       ${mkBench {
-        name = "Kube-prometheus manifests";
-        vendor = "${kubePrometheusBench}/vendor";
-        path = "${kubePrometheusBench}/example.jsonnet";
-        omitSource = true;
+        name = "Loki manifests";
+        path = "${realworldBench}/entry-loki.jsonnet";
+        jpaths = [ "${realworldBench}/vendor" ];
+        skipCpp = "too slow, takes hours, skews results";
+        skipGo = skipSlow;
+      }}
+      ${mkBench {
+        name = "Mimir manifests";
+        path = "${realworldBench}/entry-mimir.jsonnet";
+        jpaths = [ "${realworldBench}/vendor" ];
+        skipCpp = "too slow, takes hours, skews results";
+        skipGo = skipSlow;
+      }}
+      ${mkBench {
+        name = "Tempo manifests";
+        path = "${realworldBench}/entry-tempo.jsonnet";
+        jpaths = [ "${realworldBench}/vendor" ];
+        skipCpp = "too slow, takes hours, skews results";
+        skipGo = skipSlow;
+      }}
+      ${mkBench {
+        name = "GitLab runbooks dashboards";
+        path = "${realworldBench}/entry-gitlab-runbooks.jsonnet";
+        jpaths = [
+          "${realworldBench}/vendor"
+          "${realworldBench}/vendor/runbooks/libsonnet"
+          "${realworldBench}/vendor/runbooks/dashboards"
+          "${realworldBench}/vendor/runbooks/services"
+          "${realworldBench}/vendor/runbooks/metrics-catalog"
+        ];
         skipCpp = "too slow, takes hours, skews results";
         skipGo = skipSlow;
       }}
addednix/fetch-jrq.nixdiffbeforeafterboth
--- /dev/null
+++ b/nix/fetch-jrq.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  stdenvNoCC,
+  cacert,
+  jrsonnet,
+}:
+{
+  lockfile,
+  vendorHash,
+  name ? "jrq-vendor",
+}:
+stdenvNoCC.mkDerivation (finalAttrs: {
+  inherit name;
+
+  outputHashMode = "recursive";
+  outputHashAlgo = "sha256";
+  outputHash = vendorHash;
+
+  nativeBuildInputs = [
+    jrsonnet
+    cacert
+  ];
+
+  dontUnpack = true;
+  dontConfigure = true;
+  dontInstall = true;
+  dontFixup = true;
+
+  SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
+  GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt";
+
+  buildPhase = ''
+    runHook preBuild
+
+    export HOME=$TMPDIR
+
+    install -m644 ${lockfile} jsonnetfile.json
+    install -m644 ${lockfile} jsonnetfile.lock.json
+
+    mkdir -p "$out"
+    jrb --jsonnetpkg-home "$out" install
+
+    runHook postBuild
+  '';
+
+  passthru = {
+    inherit lockfile vendorHash;
+  };
+})
addedtests/realworld/.gitignorediffbeforeafterboth
--- /dev/null
+++ b/tests/realworld/.gitignore
@@ -0,0 +1 @@
+/vendor
addedtests/realworld/entry-gitlab-runbooks.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/tests/realworld/entry-gitlab-runbooks.jsonnet
@@ -0,0 +1 @@
+import 'api/main.dashboard.jsonnet'
addedtests/realworld/entry-graalvm.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/tests/realworld/entry-graalvm.jsonnet
@@ -0,0 +1,42 @@
+local common = import 'ci/ci_common/common.jsonnet';
+local graal_common = import 'graal-common.json';
+
+local compiler = import 'compiler/ci/ci.jsonnet';
+local wasm = import 'wasm/ci/ci.jsonnet';
+local espresso = import 'espresso/ci/ci.jsonnet';
+local regex = import 'regex/ci/ci.jsonnet';
+local sdk = import 'sdk/ci/ci.jsonnet';
+local substratevm = import 'substratevm/ci/ci.jsonnet';
+local sulong = import 'sulong/ci/ci.jsonnet';
+local tools = import 'tools/ci/ci.jsonnet';
+local truffle = import 'truffle/ci/ci.jsonnet';
+local javadoc = import 'ci_includes/publish-javadoc.jsonnet';
+local visualizer = import 'visualizer/ci/ci.jsonnet';
+local web_image = import 'web-image/ci/ci.jsonnet';
+
+{
+  ci_resources:: (import 'ci/ci_common/ci-resources.libsonnet'),
+  overlay: graal_common.ci.overlay,
+  specVersion: '7',
+  tierConfig: {
+    tier1: 'gate',
+    tier2: 'gate',
+    tier3: 'gate',
+    tier4: 'post-merge',
+  },
+  builds: [common.add_excludes_guard(common.with_style_component(b)) for b in (
+    common.with_components(compiler.builds, ['compiler']) +
+    common.with_components(wasm.builds, ['wasm']) +
+    common.with_components(espresso.builds, ['espresso']) +
+    common.with_components(regex.builds, ['regex']) +
+    common.with_components(sdk.builds, ['sdk']) +
+    common.with_components(substratevm.builds, ['svm']) +
+    common.with_components(sulong.builds, ['sulong']) +
+    common.with_components(tools.builds, ['tools']) +
+    common.with_components(truffle.builds, ['truffle']) +
+    common.with_components(javadoc.builds, ['javadoc']) +
+    common.with_components(visualizer.builds, ['visualizer']) +
+    common.with_components(web_image.builds, ['webimage'])
+  )],
+  assert (import 'ci/ci_common/run-spec-demo.jsonnet').check(),
+}
addedtests/realworld/entry-loki.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/tests/realworld/entry-loki.jsonnet
@@ -0,0 +1,30 @@
+local loki = import 'loki/loki.libsonnet';
+
+loki {
+  _config+:: {
+    namespace: 'loki',
+    cluster: 'loki-bench',
+    storage_backend: 's3',
+    s3_address: 's3.example.com',
+    s3_bucket_name: 'loki-bench',
+    s3_access_key: 'AKIA',
+    s3_secret_access_key: 'SECRET',
+    boltdb_shipper_shared_store: 's3',
+
+    using_boltdb_shipper: false,
+    using_tsdb_shipper: true,
+    use_index_gateway: true,
+
+    loki+: {
+      schema_config+: {
+        configs: [{
+          from: '2024-01-01',
+          store: 'tsdb',
+          object_store: 's3',
+          schema: 'v13',
+          index: { prefix: 'loki_index_', period: '24h' },
+        }],
+      },
+    },
+  },
+}
addedtests/realworld/entry-mimir.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/tests/realworld/entry-mimir.jsonnet
@@ -0,0 +1,14 @@
+local mimir = import 'mimir/mimir.libsonnet';
+
+mimir {
+  _config+:: {
+    namespace: 'mimir',
+    cluster: 'mimir-bench',
+    external_url: 'http://mimir.example.com',
+
+    storage_backend: 'gcs',
+    blocks_storage_bucket_name: 'mimir-blocks',
+    ruler_storage_bucket_name: 'mimir-ruler',
+    alertmanager_storage_bucket_name: 'mimir-alertmanager',
+  },
+}
addedtests/realworld/entry-tempo.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/tests/realworld/entry-tempo.jsonnet
@@ -0,0 +1,36 @@
+local tempo = import 'microservices/tempo.libsonnet';
+
+tempo {
+  _images+:: {
+    tempo: 'grafana/tempo:latest',
+    tempo_vulture: 'grafana/tempo-vulture:latest',
+    tempo_query: 'grafana/tempo-query:latest',
+  },
+
+  _config+:: {
+    namespace: 'tracing',
+    distributor+: {
+      receivers: {
+        otlp: { protocols: { grpc: { endpoint: '0.0.0.0:4317' } } },
+      },
+    },
+    metrics_generator+: {
+      pvc_size: '10Gi',
+      pvc_storage_class: 'fast',
+      ephemeral_storage_request_size: '10Gi',
+      ephemeral_storage_limit_size: '11Gi',
+    },
+    live_store+: {
+      pvc_size: '10Gi',
+      pvc_storage_class: 'fast',
+    },
+    backend_scheduler+: {
+      pvc_size: '200Mi',
+      pvc_storage_class: 'fast',
+    },
+    backend: 'gcs',
+    bucket: 'tempo-bench',
+    kafka_address: 'kafka:9092',
+    kafka_topic: 'tempo',
+  },
+}
addedtests/realworld/jsonnetfile.jsondiffbeforeafterboth
--- /dev/null
+++ b/tests/realworld/jsonnetfile.json
@@ -0,0 +1,52 @@
+{
+  "version": 1,
+  "dependencies": [
+    {
+      "source": {
+        "git": {
+          "remote": "https://github.com/prometheus-operator/kube-prometheus"
+        }
+      }
+    },
+    {
+      "source": {
+        "git": {
+          "remote": "https://github.com/oracle/graal"
+        }
+      }
+    },
+    {
+      "source": {
+        "git": {
+          "remote": "https://github.com/grafana/loki",
+          "subdir": "production/ksonnet/loki"
+        }
+      }
+    },
+    {
+      "source": {
+        "git": {
+          "remote": "https://github.com/grafana/mimir",
+          "subdir": "operations/mimir"
+        }
+      }
+    },
+    {
+      "source": {
+        "git": {
+          "remote": "https://github.com/grafana/tempo",
+          "subdir": "operations/jsonnet/microservices"
+        }
+      }
+    },
+    {
+      "source": {
+        "git": {
+          "remote": "https://gitlab.com/gitlab-com/runbooks"
+        }
+      },
+      "version": "c4082c94065b1b6a521eed59ed624478131cd9c0"
+    }
+  ],
+  "legacyImports": true
+}
addedtests/realworld/jsonnetfile.lock.jsondiffbeforeafterboth
after · tests/realworld/jsonnetfile.lock.json
1{2  "version": 1,3  "dependencies": [4    {5      "source": {6        "git": {7          "remote": "https://github.com/prometheus-operator/kube-prometheus"8        }9      },10      "version": "392c6c5e8e83c9a0f76355d4b0837dccf76ad7ea"11    },12    {13      "source": {14        "git": {15          "remote": "https://github.com/grafana/jsonnet-libs.git",16          "subdir": "mixin-utils"17        }18      },19      "version": "3b8056670048416f5fb660dc039e473eb20a40b2"20    },21    {22      "source": {23        "git": {24          "remote": "https://github.com/brancz/kubernetes-grafana",25          "subdir": "grafana"26        }27      },28      "version": "5698c8940b6dadca3f42107b7839557bc041761f"29    },30    {31      "source": {32        "git": {33          "remote": "https://github.com/grafana/grafonnet-lib.git",34          "subdir": "grafonnet"35        }36      },37      "version": "a1d61cce1da59c71409b99b5c7568511fec661ea"38    },39    {40      "source": {41        "git": {42          "remote": "https://github.com/grafana/grafana",43          "subdir": "grafana-mixin"44        }45      },46      "version": "278a9c4cb758a546229e2b408def7e3dcb5f4ec0",47      "name": "grafana-mixin"48    },49    {50      "source": {51        "git": {52          "remote": "https://github.com/etcd-io/etcd",53          "subdir": "contrib/mixin"54        }55      },56      "version": "0cbc031e7f224102bd1ec42a81f659a2b8c3350c"57    },58    {59      "source": {60        "git": {61          "remote": "https://github.com/grafana/grafonnet.git",62          "subdir": "gen/grafonnet-v10.0.0"63        }64      },65      "version": "7380c9c64fb973f34c3ec46265621a2b0dee0058"66    },67    {68      "source": {69        "git": {70          "remote": "https://github.com/jsonnet-libs/docsonnet.git",71          "subdir": "doc-util"72        }73      },74      "version": "bf6f08ae02a51c48bdcec4629b1c1a5a62c6f803"75    },76    {77      "source": {78        "git": {79          "remote": "https://github.com/jsonnet-libs/xtd.git"80        }81      },82      "version": "4d7f8cb24d613430799f9d56809cc6964f35cea9"83    },84    {85      "source": {86        "git": {87          "remote": "https://github.com/prometheus-operator/prometheus-operator",88          "subdir": "jsonnet/prometheus-operator"89        }90      },91      "version": "288f0ae3f4ef14e3c75078cbd7dfe1857c3fb066"92    },93    {94      "source": {95        "git": {96          "remote": "https://github.com/prometheus-operator/prometheus-operator",97          "subdir": "jsonnet/mixin"98        }99      },100      "version": "288f0ae3f4ef14e3c75078cbd7dfe1857c3fb066",101      "name": "prometheus-operator-mixin"102    },103    {104      "source": {105        "git": {106          "remote": "https://github.com/kubernetes-monitoring/kubernetes-mixin"107        }108      },109      "version": "acd544dbd02ebce1e000abe006df6d2e4ac1438e"110    },111    {112      "source": {113        "git": {114          "remote": "https://github.com/grafana/grafonnet.git",115          "subdir": "gen/grafonnet-latest"116        }117      },118      "version": "7380c9c64fb973f34c3ec46265621a2b0dee0058"119    },120    {121      "source": {122        "git": {123          "remote": "https://github.com/grafana/grafonnet.git",124          "subdir": "gen/grafonnet-v11.4.0"125        }126      },127      "version": "7380c9c64fb973f34c3ec46265621a2b0dee0058"128    },129    {130      "source": {131        "git": {132          "remote": "https://github.com/kubernetes/kube-state-metrics",133          "subdir": "jsonnet/kube-state-metrics"134        }135      },136      "version": "cd5430fd1834f43ffd093e3e22c2af1a625dbe2e"137    },138    {139      "source": {140        "git": {141          "remote": "https://github.com/kubernetes/kube-state-metrics",142          "subdir": "jsonnet/kube-state-metrics-mixin"143        }144      },145      "version": "cd5430fd1834f43ffd093e3e22c2af1a625dbe2e"146    },147    {148      "source": {149        "git": {150          "remote": "https://github.com/prometheus/node_exporter",151          "subdir": "docs/node-mixin"152        }153      },154      "version": "d6d0e710bb7daf07a2743fde060f0d5f32c565f3"155    },156    {157      "source": {158        "git": {159          "remote": "https://github.com/prometheus/prometheus",160          "subdir": "documentation/prometheus-mixin"161        }162      },163      "version": "91c184a899b8e8237cdd08876fba54aa5f9feb6c",164      "name": "prometheus"165    },166    {167      "source": {168        "git": {169          "remote": "https://github.com/prometheus/alertmanager",170          "subdir": "doc/alertmanager-mixin"171        }172      },173      "version": "c85e06d3cd4ba24d003454ee11834404224d7763",174      "name": "alertmanager"175    },176    {177      "source": {178        "git": {179          "remote": "https://github.com/pyrra-dev/pyrra.git",180          "subdir": "jsonnet/controller-gen"181        }182      },183      "version": "25bac00a6c478211326eed4aa46583d1b9466ca8",184      "name": "pyrra"185    },186    {187      "source": {188        "git": {189          "remote": "https://github.com/thanos-io/thanos",190          "subdir": "mixin"191        }192      },193      "version": "cdca5483752e1635d249fbb1271978262775dc1b",194      "name": "thanos-mixin"195    },196    {197      "source": {198        "git": {199          "remote": "https://github.com/grafana/jsonnet-libs.git",200          "subdir": "grafana-builder"201        }202      },203      "version": "3b8056670048416f5fb660dc039e473eb20a40b2"204    },205    {206      "source": {207        "git": {208          "remote": "https://github.com/oracle/graal"209        }210      },211      "version": "d24e4efdac60ee798d7a795cf015f084556c912e"212    },213    {214      "source": {215        "git": {216          "remote": "https://github.com/grafana/loki",217          "subdir": "production/ksonnet/loki"218        }219      },220      "version": "fe7f43b7f36d8f90931a3bfd35fadc83e1c23d5f"221    },222    {223      "source": {224        "git": {225          "remote": "https://github.com/grafana/jsonnet-libs.git",226          "subdir": "consul"227        }228      },229      "version": "3b8056670048416f5fb660dc039e473eb20a40b2"230    },231    {232      "source": {233        "git": {234          "remote": "https://github.com/grafana/jsonnet-libs.git",235          "subdir": "jaeger-agent-mixin"236        }237      },238      "version": "3b8056670048416f5fb660dc039e473eb20a40b2"239    },240    {241      "source": {242        "git": {243          "remote": "https://github.com/grafana/jsonnet-libs.git",244          "subdir": "ksonnet-util"245        }246      },247      "version": "3b8056670048416f5fb660dc039e473eb20a40b2"248    },249    {250      "source": {251        "git": {252          "remote": "https://github.com/grafana/jsonnet-libs.git",253          "subdir": "memcached"254        }255      },256      "version": "3b8056670048416f5fb660dc039e473eb20a40b2"257    },258    {259      "source": {260        "git": {261          "remote": "https://github.com/grafana/mimir",262          "subdir": "operations/mimir"263        }264      },265      "version": "39dd4ffb859d0abb3951d406495bc4bd422600dd"266    },267    {268      "source": {269        "git": {270          "remote": "https://github.com/grafana/rollout-operator.git",271          "subdir": "operations/rollout-operator"272        }273      },274      "version": "2afe062893496f0554b4764bbe1638f8019832fb"275    },276    {277      "source": {278        "git": {279          "remote": "https://github.com/jsonnet-libs/keda-libsonnet.git",280          "subdir": "2.15"281        }282      },283      "version": "dbc8cf1a9847f123d8325378111155fb135983ab",284      "name": "keda-libsonnet"285    },286    {287      "source": {288        "git": {289          "remote": "https://github.com/grafana/tempo",290          "subdir": "operations/jsonnet/microservices"291        }292      },293      "version": "f6124c0dea954763dbaa461dcc7b8a89bc8d2635"294    },295    {296      "source": {297        "git": {298          "remote": "https://github.com/jsonnet-libs/k8s-libsonnet.git",299          "subdir": "1.32"300        }301      },302      "version": "55380470fb7979e6ce0c4316cb9c27a266caf298"303    },304    {305      "source": {306        "git": {307          "remote": "https://github.com/jsonnet-libs/vertical-pod-autoscaler-libsonnet.git",308          "subdir": "1.0.0"309        }310      },311      "version": "5d16cd466d12489e6ffba5b17813a0203016e68d"312    },313    {314      "source": {315        "git": {316          "remote": "https://gitlab.com/gitlab-com/runbooks"317        }318      },319      "version": "c4082c94065b1b6a521eed59ed624478131cd9c0"320    },321    {322      "source": {323        "git": {324          "remote": "https://github.com/grafana/jsonnet-libs.git",325          "subdir": "memcached-mixin"326        }327      },328      "version": "3b8056670048416f5fb660dc039e473eb20a40b2"329    },330    {331      "source": {332        "git": {333          "remote": "https://github.com/yugui/jsonnetunit.git",334          "subdir": "jsonnetunit"335        }336      },337      "version": "6927c58cae7624a00f368b977ccc477d4f74071f"338    }339  ],340  "legacyImports": true341}
addedtests/realworld/k.libsonnetdiffbeforeafterboth
--- /dev/null
+++ b/tests/realworld/k.libsonnet
@@ -0,0 +1 @@
+import '1.32/main.libsonnet'