)]}'
{
  "commit": "5e08a0e8fa4fd9d0156d28f8f4e53e5b176c704a",
  "tree": "9c54be88e745853203f046e6d2a4eb542e6563b1",
  "parents": [
    "427f57893cb4bf8aebc0b6f56d0cb3f178d23cf1"
  ],
  "author": {
    "name": "Adam Israel",
    "email": "adam.israel@canonical.com",
    "time": "Thu Sep 06 19:22:47 2018 -0400"
  },
  "committer": {
    "name": "Adam Israel",
    "email": "adam.israel@canonical.com",
    "time": "Thu Sep 13 13:01:10 2018 -0400"
  },
  "message": "Tox + Integration testing\n\nThis commit implements a VNF Descriptor-driven integration\ntest framework, which will lead to integration tests being able\nto run via jenkins, and more robust testing in general.\n\nN2VC:\n\n- Allow the use of an event loop passed when instantiating N2VC\n- Refactor the execution of the initial-config-primitive so that it can\nbe easily re-run, such as the case of when a proxy charm is deployed\nbefore the VNF\u0027s VM is created.\n- Refactor GetPrimitiveStatus, to return the status (queued, running,\ncomplete, failed) of a primitive.\n- Add GetPrimitiveOutput, to return the output of a completed primitive\n- Fix model disconnection when executing a primitive (it was happening\nin the wrong scope)\n- Fix wait_for_application, which was previously unused and broken\n- Add support for parameter\u0027s \u0027data-type\u0027 field\n- Add support for better SSH key management, allowing for a proxy charm\nto be deployed before the VNF, so that it\u0027s public SSH key can be\ninjected when the VNF\u0027s VM is created.\n\nIntegration Tests:\n\nThe integration tests are intended to exercise the expected\nfunctionality of a VNF/charm: deploy the charm, configure it as required\n(i.e., ssh credentials), and execute the VNF\u0027s\ninitial-config-primitives.\n\n- test_native_charm: deploy a native charm to a juju-managed machine and\nverify primitive execution works\n- test_proxy_charm: deploy a proxy charm, configured to talk to a remote\nmachine, and verify primitive execution works\n- test_metrics_native: deploy a native charm and collect a metric\n- test_metrics_proxy: deploy a proxy charm and collect a metric from the\nvnf\n- test_no_initial-config-primitive: deploy a vnf without an\ninitial-config-primitive\n- test_non-string_parameter: deploy a vnf with a non-string parameter in\ninitial-config-primitive\n- test_no_parameter: deploy a vnf with a primitive with no parameters\n\nGeneral:\n- Add a build target to tox.ini so that a .deb is built via Jenkins\n\nTODO (in a follow-up commit):\n- test multi-vdu, multi-charm\n- test deploying a native charm to a manually-provisioned machine\n- Update inline pydoc\n- Add more integration tests\n- Add global per-test timeout to catch stalled tests\n\nSigned-off-by: Adam Israel \u003cadam.israel@canonical.com\u003e\nChange-Id: Id322b45d65c44714e8051fc5764f8c20b76d846c\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4655d335ed3ae0a7eb3b09b5ebec8decf76d9864",
      "new_mode": 33188,
      "new_path": "Makefile"
    },
    {
      "type": "modify",
      "old_id": "f642ead13b2d0e6d4c1facbd52664ee8609bf9ed",
      "old_mode": 33188,
      "old_path": "n2vc/vnf.py",
      "new_id": "df3ec00f06bb4fb86427f0b90e6b4acefc7f9431",
      "new_mode": 33188,
      "new_path": "n2vc/vnf.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "56380a4be30575ba45169528a6689cbc0c4406a0",
      "new_mode": 33188,
      "new_path": "tests/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a02ab7e724381d3fbe9930fa8248af88747b04f0",
      "new_mode": 33188,
      "new_path": "tests/base.py"
    },
    {
      "type": "delete",
      "old_id": "d59d3613006a5afe1b9322aed9d77b5945b44356",
      "old_mode": 57344,
      "old_path": "tests/charms/layers/metrics-ci/deps/layer/basic",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "6861ce384f0dcf4e3eb1eaddf421143f4f76e64e",
      "old_mode": 57344,
      "old_path": "tests/charms/layers/metrics-ci/deps/layer/metrics",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "fcdcea4e5de3e1556c24e6704607862d0ba00a56",
      "old_mode": 57344,
      "old_path": "tests/charms/layers/metrics-ci/deps/layer/options",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "e092eef75dc91ec1c1d85ddfcc3ca157a9c02a27",
      "old_mode": 33261,
      "old_path": "tests/charms/layers/metrics-ci/icon.svg",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b6816b22ade2fa36326d7e1f612b6f6203768949",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/metrics-proxy-ci/README.ex"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "51f2ce4a07bddfbc72679ec14280fd6461cb307d",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/metrics-proxy-ci/config.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "790dee67024dff5104b930a708fceef6db07b7dc",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/metrics-proxy-ci/layer.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ae424347dddfcff382ac46c41d9da7f818df4de7",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/metrics-proxy-ci/metadata.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dae092f1a0a3dfc43a40be4dcd13d212d645c7a7",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/metrics-proxy-ci/metrics.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "51ce49e2a33432dba5e886ff7bbe6f23c53edd36",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/metrics-proxy-ci/reactive/metrics_ci.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f0616a560a811bae78d7872dd433d612909c73cd",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/metrics-proxy-ci/tests/00-setup"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7595ecf7bf8c23db65eb78af9d28f64856ddd70f",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/metrics-proxy-ci/tests/10-deploy"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d58b76237727be64a02f19ae4099c2289690e130",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/native-ci/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6adcba78f495e548ff1d3405cb0c137f1dd10f49",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/native-ci/actions.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e30af4cfa084120a9343bf71c421b69ec3f2967",
      "new_mode": 33261,
      "new_path": "tests/charms/layers/native-ci/actions/test"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e30af4cfa084120a9343bf71c421b69ec3f2967",
      "new_mode": 33261,
      "new_path": "tests/charms/layers/native-ci/actions/testint"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "edc88399beab15e5eb6c33ecfd9d7d45b1d2665f",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/native-ci/layer.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6acf296b0e567ea7d1e3af04f937958a351730eb",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/native-ci/metadata.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "17bf5f4bb5fa373e0794ee82675dd8afe240f196",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/native-ci/reactive/native-ci.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c16d9d8e0cd0fa7e0dbd0fca280dc34ea65d3aa6",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/proxy-ci/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5af8591f158cef132275cbffc415ce9afa486de8",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/proxy-ci/actions.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e30af4cfa084120a9343bf71c421b69ec3f2967",
      "new_mode": 33261,
      "new_path": "tests/charms/layers/proxy-ci/actions/test"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "790dee67024dff5104b930a708fceef6db07b7dc",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/proxy-ci/layer.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b96abe4d17e34c1a3bafd21eaa324ec6c0eeff63",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/proxy-ci/metadata.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "30e4eea3036ea1fe30afff829eab0f130c772f06",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/proxy-ci/reactive/proxy_ci.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d1b60ff9e536f92335bb8b56c7ac06305ef9ba41",
      "new_mode": 33188,
      "new_path": "tests/integration/test_charm_native.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c1661ac1d2f8ef32a1c78cede406fae9050f1fb3",
      "new_mode": 33188,
      "new_path": "tests/integration/test_charm_proxy.py"
    },
    {
      "type": "delete",
      "old_id": "1151d46355ae41ff48f3f307e6b85bd0f4c2ca01",
      "old_mode": 33188,
      "old_path": "tests/integration/test_metrics.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "74faebf4194425b3f7652490bae77aa786642aa0",
      "new_mode": 33188,
      "new_path": "tests/integration/test_metrics_native.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "98285fdf8924a9e29fd4e95eb78ec66963b4acfe",
      "new_mode": 33188,
      "new_path": "tests/integration/test_metrics_proxy.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e66a69586617c29cd79bc442328b46712f89e0ac",
      "new_mode": 33188,
      "new_path": "tests/integration/test_no_initial_config_primitive.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "39c24438793089a19ef1650369cd07b22474c4a6",
      "new_mode": 33188,
      "new_path": "tests/integration/test_no_parameter.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ed3dfc7c687cd29a0e659bcc1b005d7211e7abfc",
      "new_mode": 33188,
      "new_path": "tests/integration/test_non_string_parameter.py"
    },
    {
      "type": "delete",
      "old_id": "da6e96efa322d21d0a362c7e7f84c45633c37613",
      "old_mode": 33188,
      "old_path": "tests/test_async_task.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8adc202153ebe08fe7161072f8c5f44734b266d6",
      "new_mode": 33188,
      "new_path": "tests/test_libjuju.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f68fa3ac498fd8e7953bec2e3287fa736b895fa4",
      "new_mode": 33188,
      "new_path": "tests/test_lxd.py"
    },
    {
      "type": "delete",
      "old_id": "8ac9380fd51ebfc8ec5ea94bfc333a437162957c",
      "old_mode": 33188,
      "old_path": "tests/test_primitive_no_parameter.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "9a2d5ad78214a4bb320c9f543d738ce419806309",
      "old_mode": 33188,
      "old_path": "tests/test_primitive_non-string_parameter.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "5bb4325d76837c3c6174b2ae5fa8494aa6f3c3c2",
      "old_mode": 33261,
      "old_path": "tests/test_python.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "a971872d26bc08199dcd42a26e4796e31a786c24",
      "old_mode": 33188,
      "old_path": "tests/test_single_vdu_proxy_charm.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "d86d6f58ef2277fef481b35d2da1adfbfb472f27",
      "old_mode": 33188,
      "old_path": "tests/utils.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "502214f1638e3abeaeb72ff5dce615c19ffd312d",
      "old_mode": 33188,
      "old_path": "tox.ini",
      "new_id": "9ef529ffe1603442c8e5835258fccae21eaa9d74",
      "new_mode": 33188,
      "new_path": "tox.ini"
    }
  ]
}
