[ARVADOS] updated: b798b325087c82578b4b079df968ad844a93dfb3

git at public.curoverse.com git at public.curoverse.com
Mon Nov 3 16:00:02 EST 2014


Summary of changes:
 .../workbench/app/assets/javascripts/filterable.js |  51 ++
 .../app/controllers/collections_controller.rb      |   4 +-
 apps/workbench/app/controllers/jobs_controller.rb  |   4 -
 .../controllers/pipeline_instances_controller.rb   |  12 +-
 .../app/controllers/projects_controller.rb         |  27 +-
 apps/workbench/app/helpers/application_helper.rb   |   2 +
 apps/workbench/app/helpers/provenance_helper.rb    |   8 +-
 apps/workbench/app/models/pipeline_instance.rb     |   6 +-
 .../app/views/collections/_show_files.html.erb     |  33 +-
 .../pipeline_instances/_running_component.html.erb |   2 +-
 .../projects/_show_jobs_and_pipelines.html.erb     |   1 +
 .../app/views/projects/_show_tab_contents.html.erb |   2 +-
 apps/workbench/config/application.yml.example      |   9 +
 .../config/environments/production.rb.example      |   2 +-
 .../controllers/collections_controller_test.rb     |  49 +-
 .../pipeline_instances_controller_test.rb          |  76 +--
 .../test/functional/collections_controller_test.rb |   8 +
 .../workbench/test/integration/collections_test.rb |  39 ++
 .../test/integration/pipeline_instances_test.rb    |  30 +-
 apps/workbench/test/integration/projects_test.rb   |   2 +-
 apps/workbench/test/unit/pipeline_instance_test.rb |  42 +-
 doc/_config.yml                                    |  11 +-
 .../create-standard-objects.html.textile.liquid    |  62 +-
 doc/install/index.html.textile.liquid              |  21 +-
 doc/install/install-api-server.html.textile.liquid | 142 +++--
 .../install-crunch-dispatch.html.textile.liquid    |   8 +-
 doc/install/install-keep.html.textile.liquid       |  54 --
 doc/install/install-keepproxy.html.textile.liquid  |  84 +++
 doc/install/install-keepstore.html.textile.liquid  |  90 +++
 .../install-manual-overview.html.textile.liquid    |  16 +
 ...l-manual-prerequisites-ruby.html.textile.liquid |  31 +
 ...nstall-manual-prerequisites.html.textile.liquid |  46 ++
 .../install-shell-server.html.textile.liquid       |  17 +
 doc/install/install-sso.html.textile.liquid        |   9 +-
 .../install-workbench-app.html.textile.liquid      | 106 +++-
 docker/api/Dockerfile                              |   9 +-
 docker/api/application.yml.in                      |   2 +
 docker/arvdock                                     |  18 +-
 docker/base/Dockerfile                             |  15 +-
 docker/compute/Dockerfile                          |  11 +-
 docker/compute/supervisor.conf                     |   5 +
 docker/doc/Dockerfile                              |   4 +-
 docker/java-bwa-samtools/Dockerfile                |   4 +-
 docker/passenger/Dockerfile                        |  13 +-
 docker/shell/Dockerfile                            |   7 +-
 docker/slurm/Dockerfile                            |   3 +-
 docker/workbench/Dockerfile                        |   3 +-
 sdk/cli/arvados-cli.gemspec                        |   2 +-
 sdk/cli/bin/arv                                    |   2 +-
 sdk/cli/bin/arv-copy                               |   1 +
 sdk/cli/bin/crunch-job                             |  99 +--
 sdk/python/arvados/commands/arv_copy.py            | 665 +++++++++++++++++++++
 sdk/python/arvados/commands/keepdocker.py          |  31 +-
 sdk/python/arvados/config.py                       |  27 +-
 sdk/python/arvados/keep.py                         |   5 +-
 sdk/python/bin/arv-copy                            |   4 +
 sdk/python/setup.py                                |   1 +
 sdk/python/tests/test_keep_client.py               |   7 +
 sdk/ruby/arvados.gemspec                           |   2 +-
 sdk/ruby/lib/arvados/keep.rb                       |   1 +
 sdk/ruby/test/test_keep_manifest.rb                |  22 +-
 .../arvados/v1/collections_controller.rb           |   9 +-
 .../controllers/arvados/v1/groups_controller.rb    |   2 +-
 services/api/app/models/user.rb                    |   2 +
 services/api/config/application.yml.example        |   1 +
 services/api/script/crunch-dispatch.rb             | 144 +++--
 .../test/fixtures/api_client_authorizations.yml    |   7 +
 services/api/test/fixtures/collections.yml         |  43 +-
 services/api/test/fixtures/groups.yml              |  16 +-
 services/api/test/fixtures/jobs.yml                |  10 +-
 services/api/test/fixtures/links.yml               |  15 +
 services/api/test/fixtures/pipeline_instances.yml  |  39 +-
 services/api/test/fixtures/pipeline_templates.yml  |  22 +
 services/api/test/fixtures/users.yml               |  14 +
 services/fuse/tests/test_mount.py                  |  66 +-
 services/nodemanager/arvnodeman/jobqueue.py        |   2 +-
 services/nodemanager/tests/test_computenode.py     |   3 +-
 services/nodemanager/tests/test_jobqueue.py        |   5 +
 78 files changed, 1950 insertions(+), 519 deletions(-)
 delete mode 100644 doc/install/install-keep.html.textile.liquid
 create mode 100644 doc/install/install-keepproxy.html.textile.liquid
 create mode 100644 doc/install/install-keepstore.html.textile.liquid
 create mode 100644 doc/install/install-manual-overview.html.textile.liquid
 create mode 100644 doc/install/install-manual-prerequisites-ruby.html.textile.liquid
 create mode 100644 doc/install/install-manual-prerequisites.html.textile.liquid
 create mode 100644 doc/install/install-shell-server.html.textile.liquid
 create mode 120000 sdk/cli/bin/arv-copy
 create mode 100755 sdk/python/arvados/commands/arv_copy.py
 create mode 100755 sdk/python/bin/arv-copy

       via  b798b325087c82578b4b079df968ad844a93dfb3 (commit)
       via  5dd7bd8a05d52838b1cb8df7b341a843abae7a0a (commit)
       via  15dbb3110b3b7cc6712e58bdfbb9a5df7fab1882 (commit)
       via  3978e8ae9c1b5bbc07c63fd062e189a81e52399c (commit)
       via  ae96829cc088d18c7aaf438eacb75830c7a40662 (commit)
       via  a6606b79fb6496e43eef6b2e8b04d5c1061f5635 (commit)
       via  4498d81399482be11a00e5e2223ef08d0576ef06 (commit)
       via  28053f8adcf1c36ba0a8cdf9c0b348765e68591a (commit)
       via  313f5fedd4214d077e2b5c7c26bab4df3895c44a (commit)
       via  f39bdf87343e1e8a2c5c81221d262422c2651de2 (commit)
       via  102582e4b0c70349fc6b9077fd7618782a1a49bd (commit)
       via  27b534ddd7d2b56ff63cd2ca100fa3119df51a2f (commit)
       via  4978c1e740700ec78c26a8046a457496fd9b974c (commit)
       via  9ac37f367da0b11971f2ecf8a80a38ae60d43a61 (commit)
       via  afc70738e8dbbc96e177f1f920b1e8e5f2598fa9 (commit)
       via  28ac1f93305968a913c394dd3d3581c4e290722d (commit)
       via  7c3f2671d43770240a834b9bd5c34ec748acdc1d (commit)
       via  d14c0c8186517176ecf182cf2555aee8ba4ede6d (commit)
       via  ed4105d0c6a0d453143849afcea33960afc22117 (commit)
       via  c6a03a7abff947dc8242e8be18b4b5e6920a3e4a (commit)
       via  4cbb39443fdd218773b4d192330e5e3632fdaaf7 (commit)
       via  b39e2b4e3f791d0c0afe9682183bd31d8341cea3 (commit)
       via  6dabd04bf356cccdb2a7d366a6edd2146b90519a (commit)
       via  92822dd390f4b3efeb183452b7ddf866c41bda17 (commit)
       via  a95a81202b12a79467018157afe54ed09deb9bda (commit)
       via  c199c0cf4a2fe22ce3e1dd0e6219937588711c50 (commit)
       via  ce6f044cfd55f761ec37112554aeab578b3ab476 (commit)
       via  1bcfc05de27282f239de4124225e27d05a1d149a (commit)
       via  fd0ca9211847806adb2e97c0ae78e9312ef89ca1 (commit)
       via  9b959a512c8cca0df65b2bf36ca4baf8eb7a809b (commit)
       via  da6674e4560229457d45abbb8a8aff9d4e305459 (commit)
       via  51e79a3be745cfd37efc49471ae21a1d54662e7f (commit)
       via  1bcf9398f365411b2a82388dbd2eb1fd1d570fe5 (commit)
       via  1d2cdef7174db30cb926d42e321ccb8957d890f2 (commit)
       via  52141835e85e4014a691e036f89bcd71a98bd6b2 (commit)
       via  e2fe6c0e5c1c62a37e03519590c04a5186a2cc9b (commit)
       via  c105f3566ef117227dae65396425618c586d9e10 (commit)
       via  78fc6d80639659e30e4f15562c382c002ed6e1ef (commit)
       via  ddc1f6b0c54b72df395cfef26e0dc4eb8f65463d (commit)
       via  7d8d1b78a10a7045d7ef2367a45c07b023272548 (commit)
       via  9ee4a125d1796dd7b71ef1b9f255133e5cf0becc (commit)
       via  5560cdf37024ba98bb0367a65bc2176c1577496b (commit)
       via  c19bb2a3554f8bcb17cadd9c133b6fb260e70513 (commit)
       via  1edad4ad7a8c239b36b6f10565ee36cbeab67ddb (commit)
       via  550997435f03118e51571994acc07273907bc6fd (commit)
       via  89ba1124c9fd6d3167c50059dc8adea64e6147b5 (commit)
       via  f549c9f05860abfb394b550c0b2c30a5a7c33283 (commit)
       via  2d244defaaa4f5f663a5ac11cf507d7203f704e3 (commit)
       via  fb2ee4033abfae93e8f9a9af367569e7f4fa3793 (commit)
       via  cbc29982e30fd776c194c47dc584710ff1b340c4 (commit)
       via  e34135f6779f58852558e03b1b95534c11ca07ae (commit)
       via  81bb05b5a18c9501057876bf5b0e1923778dad26 (commit)
       via  f78b6578bc950b72f0ffac516bde9c8fde2416be (commit)
       via  fb1bf9fde205adb90386c81214e667823708a9f1 (commit)
       via  97f3db9cb084efce35ef6a24c25d14308785a49a (commit)
       via  e1020f4ad01b6f583a9d3c2bf6d146cd9e0d9331 (commit)
       via  337a0bdb43f518fbf716ed5ecd66eb5e569b8fdf (commit)
       via  846ac5d419862e2b0051ec0843e71c601b35da44 (commit)
       via  f923effe2e0ae0b704b9236b4165866b171b6e81 (commit)
       via  fff7228b347fd12c15a18d6de47e37c2f72ae795 (commit)
       via  c330d58918b7c631307ec11bd584824bf0da7f47 (commit)
       via  e68bf42e440545bd2b760635039a232c4ef35fae (commit)
       via  8c492b3940f398dddea54792f67a7a0e9d2383a6 (commit)
       via  af2ca91daa4cb9550226be5fad80da24ee426fb7 (commit)
       via  2776ad1bd8f05cf58a2bab436db932289d80549a (commit)
       via  30bdc9b4fd57e2291f2ace690412d1775eb6e6ab (commit)
       via  c79874f462520568509bd8a880b8dacab8036489 (commit)
       via  c0943b24a1deb33ef2d866e722f77bc4e564ead5 (commit)
       via  0f9aaf18f1931984dcb34920515877d74d362841 (commit)
       via  a3db87c5a23f3a1e72ea82304d24db8c1757c095 (commit)
       via  6ed159925434818e3da1f7ff9f6a777815f2a5a4 (commit)
       via  f1eb092c311510b60b8c9b00b64407780e2a0302 (commit)
       via  3a47eb915b3865bea6d2e6536c7bc1f4a1afc8b4 (commit)
       via  4e148ec9b5db231b22f8d9bd04527023fdbc23ba (commit)
       via  ef56ac56a0bac0710a486c0e5e9cdd3199eddc61 (commit)
       via  fb01e30424d20a3430f45826e57410b8e2e5440d (commit)
       via  35ade8a042094a27e2ca5cfd5e9754aa3513410c (commit)
       via  2c16f4fbf9408bb758a0f54cae4058dccef4c2a5 (commit)
       via  c1efd42bfbb5bc7ff9ac275643ee7a0c4e44012b (commit)
       via  1bde97d8aa4d670c25015284e97281e1af163dda (commit)
       via  87b2e5da50efa25671f1368e6cb162a5584fe030 (commit)
       via  7086db26dce2ed43098daf1198a37412a5e42e48 (commit)
       via  140012f16cc5945a8c469db3e11f13cc4493cc22 (commit)
       via  4a774fdb7a95a241d4b95649ea57b505784f3362 (commit)
       via  789e479916a89e57cdf1d65c49923449c4fb1bcf (commit)
       via  21d6720325e567f78329662c286fa693a8688ff4 (commit)
       via  e8451457c28477a5c3716e878d09d0be147186d6 (commit)
       via  f8dab15791a8f19839f9db529a820b41f10440ae (commit)
       via  d3dbc2c0557801f0e269a035e257beb09fd53618 (commit)
       via  d501ef45757f78f5c1d2843eccf8016e8978345e (commit)
       via  81c3241d08ced11ea118c7f68db62032ad5bc469 (commit)
       via  8bd432b7fe67766d6f92902e20b5e63c9f18146d (commit)
       via  cdaf5c71016d2cad54d54e9b4b87bafe4554d376 (commit)
       via  b81c434401a503746ec54e53bf7058cf42beaa2f (commit)
       via  36bf949652cf8544f6176f77e07273cd3bf9df77 (commit)
       via  41c5cc5a3731417a31c8db685e78cb795bbbe91b (commit)
       via  b7f67c80916c2efa0c234ab5f4e92c24d47223c5 (commit)
       via  d0b0a2baec96a678284e3004b13dce85f36ba190 (commit)
       via  edf8405b6a3bbce4a7e11118bb9c706d36856460 (commit)
       via  d8bfa56903897394775f39b612f8dd84372c5433 (commit)
       via  91a44b10f8c7eb1bee8fcd23a577a1969bcdb2e4 (commit)
       via  f4008e9c662be5b576f5e785a4c90cc1e2cfb5fa (commit)
       via  153020da61fa3ca2341aaf5d279e56d8c489aaaa (commit)
       via  a7f12322bab34a27863d90de9ddb95f69697bf29 (commit)
       via  72d24b26cac507988ba6583064451b81d1854d78 (commit)
       via  12d990a6590e5f23a5998d29a2d8efdb0f733688 (commit)
       via  ab7c97818a088e7205d4d01db1e8a0c0709b9aa0 (commit)
       via  8c5f7a869e1d7a7c8f6338d1836987567c32f626 (commit)
       via  9cff4a0bf758ebb2e1a63df6a25c83f11752f8d8 (commit)
       via  fdbf1d6a692ae5991346e352916e8b37bd62cf19 (commit)
       via  518e0fab098eb8e025e72b67d7b2ccd75f3deec9 (commit)
       via  ac22ee15271c0d0c144d9ec42e17da965168e213 (commit)
       via  677eebc84a20221287c22b196dd81cf6ddb22fe1 (commit)
       via  04a4fa5843c3511260a750065cf79203ae1663ee (commit)
       via  963c9e8f87f09ff798e23e0c9ddca6eb7bbec796 (commit)
       via  f2170ad3c6c0f390d427c6b885527b1d1b09ffa3 (commit)
       via  e09e57378e5f98235e472a35c18a3e3a2bac97fb (commit)
       via  1ecc9b7b0b0f88a4e1a96b9bcb77aa580f68cc89 (commit)
       via  044d3d29476a8e59821ca4ebb7144f6c6b0b24ce (commit)
       via  b23bcfdc041fa9459d2beb423eea35e3ad34e64a (commit)
       via  bc59a822ddb8e55739fdbdb04e6fbd78d5116450 (commit)
       via  6d84b6c8ebeaf59a40cd9e4db1a7e897bf76511c (commit)
       via  a0e2de21d7c0cb7d38a3fbfa279e2f8278c5280d (commit)
       via  565198b9c115b5f9b5b190d76ca7a7a0901c9cc6 (commit)
       via  4dac4271e852a29ea23f0fd8efb7db417b444f29 (commit)
       via  c18a47461c7515e46967b9621af01a6699d036cb (commit)
       via  9fe1eb15e54fb07ba90f74043ecb044ce3c198f7 (commit)
       via  b056c28bcb5090bed22d78b84ac9a688dee27577 (commit)
       via  ee52a6f8505cc86e01a5488f8bbb954a676fb5fa (commit)
       via  34aac296f4a0d2df0e369a9169924ef7849d6e85 (commit)
       via  4b34d2584324664897467bb902599938710c9650 (commit)
       via  3bbfa6d0fc44e8f9baf67ca9179bef84f92d35be (commit)
       via  155c3adfcde63fcc40d6a1474cb14c73285703f6 (commit)
       via  379f500eb5304c7a5a0550de567c04f047cc54eb (commit)
       via  651dc72cbcadcbeba7012f835c945f15acb3606c (commit)
       via  ccc1d433b03a5b2d78bccfda15361abc0bdc88ed (commit)
       via  be5ce81414f6849ce50880bdc629600415d0f604 (commit)
       via  6f793d4da23db743b1833c43ccdc006b9bfe7468 (commit)
       via  d613d109dd067be0161380b0c911204e6b47312b (commit)
       via  d7e750680bbf5e655d7c986ce0cff550c8022ca4 (commit)
       via  1fbefb983066a6237664c883e8aa3d45e9f735f9 (commit)
       via  6bb1e16453ba2464a8739d754b61bf69a6c5c581 (commit)
       via  e1ce0f420a72a205a81ee0b52ea04eaf2fb047d8 (commit)
       via  5fcf5ebe7b89517edcb610bf1f1df8abf99df9ae (commit)
       via  1f3035cfe645741753e45ff8d3cf43a3fc5b2385 (commit)
       via  143bbe8d10d826b05357a531de6aa2a14f4cffb9 (commit)
      from  c4aefe62bd09b771c6e1cef7130645819af72cac (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit b798b325087c82578b4b079df968ad844a93dfb3
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Mon Nov 3 16:00:00 2014 -0500

    4031: Add owner_uuid to graph_test_collection fixtures.

diff --git a/services/api/test/fixtures/collections.yml b/services/api/test/fixtures/collections.yml
index fa0a6ab..daa421c 100644
--- a/services/api/test/fixtures/collections.yml
+++ b/services/api/test/fixtures/collections.yml
@@ -281,18 +281,21 @@ collection_with_files_in_subdir:
 
 graph_test_collection1:
   uuid: zzzzz-4zz18-bv31uwvy3neko22
+  owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
   portable_data_hash: fa7aeb5140e2848d39b416daeef4ffc5+45
   manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
   name: bar_file
 
 graph_test_collection2:
   uuid: zzzzz-4zz18-uukreo9rbgwsujx
+  owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
   portable_data_hash: b519d9cb706a29fc7ea24dbea2f05851+93
   manifest_text: ". 6a4ff0499484c6c79c95cd8c566bd25f+249025 0:249025:GNU_General_Public_License,_version_3.pdf\n"
   name: "GNU General Public License, version 3"
 
 graph_test_collection3:
   uuid: zzzzz-4zz18-uukreo9rbgwsujj
+  owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
   portable_data_hash: ea10d51bcf88862dbcc36eb292017dfd+45
   manifest_text: ". 73feffa4b7f6bb68e44cf984c85f6e88+3 0:3:baz\n"
   name: "baz file"

commit 5dd7bd8a05d52838b1cb8df7b341a843abae7a0a
Merge: 15dbb31 3978e8a
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Mon Nov 3 15:07:10 2014 -0500

    Merge remote-tracking branch 'origin/master' into 4031-fix-graph-connections
    
    Conflicts:
    	services/api/test/fixtures/collections.yml

diff --cc services/api/test/fixtures/collections.yml
index 379bebd,caa8f56..fa0a6ab
--- a/services/api/test/fixtures/collections.yml
+++ b/services/api/test/fixtures/collections.yml
@@@ -279,24 -279,42 +279,60 @@@ collection_with_files_in_subdir
    updated_at: 2014-02-03T17:22:54Z
    manifest_text: ". 85877ca2d7e05498dd3d109baf2df106+95+A3a4e26a366ee7e4ed3e476ccf05354761be2e4ae at 545a9920 0:95:file_in_subdir1\n./subdir2/subdir3 2bbc341c702df4d8f42ec31f16c10120+64+A315d7e7bad2ce937e711fc454fae2d1194d14d64 at 545a9920 0:32:file1_in_subdir3.txt 32:32:file2_in_subdir3.txt\n./subdir2/subdir3/subdir4 2bbc341c702df4d8f42ec31f16c10120+64+A315d7e7bad2ce937e711fc454fae2d1194d14d64 at 545a9920 0:32:file1_in_subdir4.txt 32:32:file2_in_subdir4.txt"
  
 +graph_test_collection1:
 +  uuid: zzzzz-4zz18-bv31uwvy3neko22
 +  portable_data_hash: fa7aeb5140e2848d39b416daeef4ffc5+45
 +  manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
 +  name: bar_file
 +
 +graph_test_collection2:
 +  uuid: zzzzz-4zz18-uukreo9rbgwsujx
 +  portable_data_hash: b519d9cb706a29fc7ea24dbea2f05851+93
 +  manifest_text: ". 6a4ff0499484c6c79c95cd8c566bd25f+249025 0:249025:GNU_General_Public_License,_version_3.pdf\n"
 +  name: "GNU General Public License, version 3"
 +
 +graph_test_collection3:
 +  uuid: zzzzz-4zz18-uukreo9rbgwsujj
 +  portable_data_hash: ea10d51bcf88862dbcc36eb292017dfd+45
 +  manifest_text: ". 73feffa4b7f6bb68e44cf984c85f6e88+3 0:3:baz\n"
 +  name: "baz file"
 +
+ collection_1_owned_by_fuse:
+   uuid: zzzzz-4zz18-ovx05bfzormx3bg
+   portable_data_hash: fa7aeb5140e2848d39b416daeef4ffc5+45
+   owner_uuid: zzzzz-tpzed-0fusedrivertest
+   created_at: 2014-02-03T17:22:54Z
+   modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
+   modified_by_user_uuid: zzzzz-tpzed-d9tiejq69daie8f
+   modified_at: 2014-02-03T17:22:54Z
+   updated_at: 2014-02-03T17:22:54Z
+   manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
+   name: "collection #1 owned by FUSE"
+ 
+ collection_2_owned_by_fuse:
+   uuid: zzzzz-4zz18-8ubpy4w74twtwzr
+   portable_data_hash: 1f4b0bc7583c2a7f9102c395f4ffc5e3+45
+   owner_uuid: zzzzz-tpzed-0fusedrivertest
+   created_at: 2014-02-03T17:22:54Z
+   modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
+   modified_by_user_uuid: zzzzz-tpzed-d9tiejq69daie8f
+   modified_at: 2014-02-03T17:22:54Z
+   updated_at: 2014-02-03T17:22:54Z
+   manifest_text: ". acbd18db4cc2f85cedef654fccc4a4d8+3 0:3:foo\n"
+   name: "collection #2 owned by FUSE"
+ 
+ collection_in_fuse_project:
+   uuid: zzzzz-4zz18-vx4mtkjqfrb534f
+   portable_data_hash: ea10d51bcf88862dbcc36eb292017dfd+45
+   owner_uuid: zzzzz-j7d0g-0000ownedbyfuse
+   created_at: 2014-02-03T17:22:54Z
+   modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
+   modified_by_user_uuid: zzzzz-tpzed-d9tiejq69daie8f
+   modified_at: 2014-02-03T17:22:54Z
+   updated_at: 2014-02-03T17:22:54Z
+   manifest_text: ". 73feffa4b7f6bb68e44cf984c85f6e88+3 0:3:baz\n"
+   name: "collection in FUSE project"
+ 
  # Test Helper trims the rest of the file
  
  # Do not add your fixtures below this line as the rest of this file will be trimmed by test_helper

commit 15dbb3110b3b7cc6712e58bdfbb9a5df7fab1882
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Mon Nov 3 15:06:09 2014 -0500

    4031: Improve provenance graph tests for readability, use fixtures instead of
    hardcoded hashes.  Improve efficiency of matching collections in search_edges.
    Remove spurious debug code.

diff --git a/apps/workbench/app/controllers/jobs_controller.rb b/apps/workbench/app/controllers/jobs_controller.rb
index 00ce0a5..5365182 100644
--- a/apps/workbench/app/controllers/jobs_controller.rb
+++ b/apps/workbench/app/controllers/jobs_controller.rb
@@ -24,10 +24,6 @@ class JobsController < ApplicationController
       nodes[c[:portable_data_hash]] = c
     end
 
-    nodes.each do |n|
-      puts "\n#{n.inspect}"
-    end
-
     @svg = ProvenanceHelper::create_provenance_graph nodes, "provenance_svg", {
       :request => request,
       :all_script_parameters => true,
diff --git a/apps/workbench/app/helpers/provenance_helper.rb b/apps/workbench/app/helpers/provenance_helper.rb
index 89d9ee6..e8850d5 100644
--- a/apps/workbench/app/helpers/provenance_helper.rb
+++ b/apps/workbench/app/helpers/provenance_helper.rb
@@ -218,7 +218,7 @@ module ProvenanceHelper
 
         label = "#{v[0][:script]}"
 
-        if label == "run-command"
+        if label == "run-command" and v[0][:script_parameters][:command].is_a? Array
           label = v[0][:script_parameters][:command].join(' ')
         end
 
@@ -234,7 +234,7 @@ module ProvenanceHelper
     end
 
     def encode_quotes value
-      value.andand.to_s.gsub("\"", "\\\"").gsub("\n", "\\n")
+      value.to_s.gsub("\"", "\\\"").gsub("\n", "\\n")
     end
   end
 
@@ -301,7 +301,9 @@ edge [fontsize=10,fontname=\"Helvetica,Arial,sans-serif\"];
     svg = svg.sub(/<svg /, "<svg id=\"#{svgId}\" ")
   end
 
-  # returns hash, uuid
+  # yields hash, uuid
+  # Position indicates whether it is a content hash or arvados uuid.
+  # One will hold a value, the other will always be nil.
   def self.find_collections(sp, key=nil, &b)
     case sp
     when ArvadosBase
diff --git a/apps/workbench/test/controllers/collections_controller_test.rb b/apps/workbench/test/controllers/collections_controller_test.rb
index 95f9151..f4d9c49 100644
--- a/apps/workbench/test/controllers/collections_controller_test.rb
+++ b/apps/workbench/test/controllers/collections_controller_test.rb
@@ -20,7 +20,8 @@ class CollectionsControllerTest < ActionController::TestCase
 
   test 'provenance graph' do
     use_token 'admin'
-    obj = Collection.where(uuid: 'zzzzz-4zz18-uukreo9rbgwsujj').results.first
+
+    obj = find_fixture Collection, "graph_test_collection3"
 
     provenance = obj.provenance.stringify_keys
 
@@ -33,28 +34,26 @@ class CollectionsControllerTest < ActionController::TestCase
                                                            :direction => :bottom_up,
                                                            :combine_jobs => :script_only})
 
-    # hash -> baz file
-    assert /ea10d51bcf88862dbcc36eb292017dfd\+45->hash_f866587e2de5291fbd38d616d6d33eab/.match(prov_svg)
+    stage1 = find_fixture Job, "graph_stage1"
+    stage3 = find_fixture Job, "graph_stage3"
+    previous_job_run = find_fixture Job, "previous_job_run"
 
-    # hash2 -> baz file
-    assert /ea10d51bcf88862dbcc36eb292017dfd\+45->hash2_02a085407e751d00b5dc88f1bd5e8247/.match(prov_svg)
+    obj_id = obj.portable_data_hash.gsub('+', '\\\+')
+    stage1_out = stage1.output.gsub('+', '\\\+')
+    stage1_id = "#{stage1.script}_#{Digest::MD5.hexdigest(stage1[:script_parameters].to_json)}"
+    stage3_id = "#{stage3.script}_#{Digest::MD5.hexdigest(stage3[:script_parameters].to_json)}"
 
-    # owned_by_active -> hash
-    assert /hash_f866587e2de5291fbd38d616d6d33eab->fa7aeb5140e2848d39b416daeef4ffc5\+45/.match(prov_svg)
+    assert /#{obj_id}->#{stage3_id}/.match(prov_svg)
 
-    # owned_by_active -> hash2
-    assert /hash2_02a085407e751d00b5dc88f1bd5e8247->fa7aeb5140e2848d39b416daeef4ffc5\+45/.match(prov_svg)
+    assert /#{stage3_id}->#{stage1_out}/.match(prov_svg)
 
-    # File::open "./tmp/stuff3.svg", "w" do |f|
-    #   f.write "<?xml version=\"1.0\" ?>\n"
-    #   f.write prov_svg
-    # end
+    assert /#{stage1_out}->#{stage1_id}/.match(prov_svg)
 
   end
 
   test 'used_by graph' do
     use_token 'admin'
-    obj = Collection.where(uuid: 'zzzzz-4zz18-bv31uwvy3neko22').results.first
+    obj = find_fixture Collection, "graph_test_collection1"
 
     used_by = obj.used_by.stringify_keys
 
@@ -64,20 +63,22 @@ class CollectionsControllerTest < ActionController::TestCase
                                                               :combine_jobs => :script_only,
                                                               :pdata_only => true})
 
-    # bar_file -> hash2
-    assert /fa7aeb5140e2848d39b416daeef4ffc5\+45->hash2_f866587e2de5291fbd38d616d6d33eab/.match(used_by_svg)
+    stage2 = find_fixture Job, "graph_stage2"
+    stage3 = find_fixture Job, "graph_stage3"
+
+    stage2_id = "#{stage2.script}_#{Digest::MD5.hexdigest(stage2[:script_parameters].to_json)}"
+    stage3_id = "#{stage3.script}_#{Digest::MD5.hexdigest(stage3[:script_parameters].to_json)}"
+
+    obj_id = obj.portable_data_hash.gsub('+', '\\\+')
+    stage3_out = stage3.output.gsub('+', '\\\+')
 
-    # hash -> baz file
-    assert /hash_f866587e2de5291fbd38d616d6d33eab->ea10d51bcf88862dbcc36eb292017dfd\+45/.match(used_by_svg)
+    assert /#{obj_id}->#{stage2_id}/.match(used_by_svg)
 
-    # hash2 -> baz file
-    assert /hash2_02a085407e751d00b5dc88f1bd5e8247->ea10d51bcf88862dbcc36eb292017dfd\+45/.match(used_by_svg)
+    assert /#{obj_id}->#{stage3_id}/.match(used_by_svg)
 
+    assert /#{stage3_id}->#{stage3_out}/.match(used_by_svg)
 
-    # File::open "./tmp/stuff4.svg", "w" do |f|
-    #   f.write "<?xml version=\"1.0\" ?>\n"
-    #   f.write used_by_svg
-    # end
+    assert /#{stage3_id}->#{stage3_out}/.match(used_by_svg)
 
   end
 end
diff --git a/apps/workbench/test/controllers/pipeline_instances_controller_test.rb b/apps/workbench/test/controllers/pipeline_instances_controller_test.rb
index 70b7493..718b5c4 100644
--- a/apps/workbench/test/controllers/pipeline_instances_controller_test.rb
+++ b/apps/workbench/test/controllers/pipeline_instances_controller_test.rb
@@ -84,14 +84,19 @@ class PipelineInstancesControllerTest < ActionController::TestCase
     @controller.params['tab_pane'] = "Graph"
     provenance, pips = @controller.graph([pipeline_for_graph])
 
+    graph_test_collection1 = find_fixture Collection, "graph_test_collection1"
+    stage1 = find_fixture Job, "graph_stage1"
+    stage2 = find_fixture Job, "graph_stage2"
+
     ['component_zzzzz-d1hrv-9fm8l10i9z2kqc9_stage1',
      'component_zzzzz-d1hrv-9fm8l10i9z2kqc9_stage2',
-     'zzzzz-8i9sb-graphstage10000',
-     'zzzzz-8i9sb-graphstage20000',
-     'b519d9cb706a29fc7ea24dbea2f05851+93',
-     'fa7aeb5140e2848d39b416daeef4ffc5+45',
-     'zzzzz-4zz18-bv31uwvy3neko22',
-     'zzzzz-4zz18-uukreo9rbgwsujx'].each do |k|
+     stage1.uuid,
+     stage2.uuid,
+     stage1.output,
+     stage2.output,
+     pipeline_for_graph[:components][:stage1][:output_uuid],
+     pipeline_for_graph[:components][:stage2][:output_uuid]
+    ].each do |k|
 
       assert_not_nil provenance[k], "Expected key #{k} in provenance set"
       assert_equal 1, pips[k], "Expected key #{k} in pips set" if !k.start_with? "component_"
@@ -104,16 +109,14 @@ class PipelineInstancesControllerTest < ActionController::TestCase
         :pips => pips,
         :only_components => true }
 
-    # hash -> owned_by_active
-    assert /hash_4fe459abe02d9b365932b8f5dc419439ab4e2577_99914b932bd37a50b983c5e7c90ae93b->fa7aeb5140e2848d39b416daeef4ffc5\+45/.match(prov_svg)
+    stage1_id = "#{stage1[:script]}_#{stage1[:script_version]}_#{Digest::MD5.hexdigest(stage1[:script_parameters].to_json)}"
+    stage2_id = "#{stage2[:script]}_#{stage2[:script_version]}_#{Digest::MD5.hexdigest(stage2[:script_parameters].to_json)}"
+
+    stage1_out = stage1[:output].gsub('+','\\\+')
 
-    # owned_by_active -> hash2
-    assert /fa7aeb5140e2848d39b416daeef4ffc5\+45->hash2_4fe459abe02d9b365932b8f5dc419439ab4e2577_4900033ec5cfaf8a63566f3664aeaa70/.match(prov_svg)
+    assert_match /#{stage1_id}->#{stage1_out}/, prov_svg
 
-    #File::open "./tmp/stuff1.svg", "w" do |f|
-    #  f.write "<?xml version=\"1.0\" ?>\n"
-    #  f.write prov_svg
-    #end
+    assert_match /#{stage1_out}->#{stage2_id}/, prov_svg
 
   end
 
@@ -171,19 +174,25 @@ class PipelineInstancesControllerTest < ActionController::TestCase
     @controller.params['tab_pane'] = "Graph"
     provenance, pips = @controller.graph([pipeline_for_graph1, pipeline_for_graph2])
 
+    collection1 = find_fixture Collection, "graph_test_collection1"
+
+    stage1 = find_fixture Job, "graph_stage1"
+    stage2 = find_fixture Job, "graph_stage2"
+    stage3 = find_fixture Job, "graph_stage3"
+
     [['component_zzzzz-d1hrv-9fm8l10i9z2kqc9_stage1', nil],
      ['component_zzzzz-d1hrv-9fm8l10i9z2kqc9_stage2', nil],
      ['component_zzzzz-d1hrv-9fm8l10i9z2kqc0_stage1', nil],
      ['component_zzzzz-d1hrv-9fm8l10i9z2kqc0_stage2', nil],
-     ['zzzzz-8i9sb-graphstage10000', 3],
-     ['zzzzz-8i9sb-graphstage20000', 1],
-     ['zzzzz-8i9sb-graphstage30000', 2],
-     ['b519d9cb706a29fc7ea24dbea2f05851+93', 1],
-     ['fa7aeb5140e2848d39b416daeef4ffc5+45', 3],
-     ['ea10d51bcf88862dbcc36eb292017dfd+45', 2],
-     ['zzzzz-4zz18-bv31uwvy3neko22', 3],
-     ['zzzzz-4zz18-uukreo9rbgwsujx', 1],
-     ['zzzzz-4zz18-uukreo9rbgwsujj', 2]
+     [stage1.uuid, 3],
+     [stage2.uuid, 1],
+     [stage3.uuid, 2],
+     [stage1.output, 3],
+     [stage2.output, 1],
+     [stage3.output, 2],
+     [pipeline_for_graph1[:components][:stage1][:output_uuid], 3],
+     [pipeline_for_graph1[:components][:stage2][:output_uuid], 1],
+     [pipeline_for_graph2[:components][:stage2][:output_uuid], 2]
     ].each do |k|
       assert_not_nil provenance[k[0]], "Expected key #{k[0]} in provenance set"
       assert_equal k[1], pips[k[0]], "Expected key #{k} in pips" if !k[0].start_with? "component_"
@@ -196,22 +205,19 @@ class PipelineInstancesControllerTest < ActionController::TestCase
         :pips => pips,
         :only_components => true }
 
-    # owned_by_active -> hash2 (stuff)
-    assert /fa7aeb5140e2848d39b416daeef4ffc5\+45->hash2_4fe459abe02d9b365932b8f5dc419439ab4e2577_4900033ec5cfaf8a63566f3664aeaa70/.match(prov_svg)
+    collection1_id = collection1.portable_data_hash.gsub('+','\\\+')
 
-    # owned_by_active -> hash2 (stuff2)
-    assert /fa7aeb5140e2848d39b416daeef4ffc5\+45->hash2_4fe459abe02d9b365932b8f5dc419439ab4e2577_02a085407e751d00b5dc88f1bd5e8247/.match(prov_svg)
+    stage2_id = "#{stage2[:script]}_#{stage2[:script_version]}_#{Digest::MD5.hexdigest(stage2[:script_parameters].to_json)}"
+    stage3_id = "#{stage3[:script]}_#{stage3[:script_version]}_#{Digest::MD5.hexdigest(stage3[:script_parameters].to_json)}"
 
-    # hash2 (stuff) -> GPL
-    assert /hash2_4fe459abe02d9b365932b8f5dc419439ab4e2577_4900033ec5cfaf8a63566f3664aeaa70->b519d9cb706a29fc7ea24dbea2f05851\+93/.match(prov_svg)
+    stage2_out = stage2[:output].gsub('+','\\\+')
+    stage3_out = stage3[:output].gsub('+','\\\+')
 
-    # hash2 (stuff2) -> baz file
-    assert /hash2_4fe459abe02d9b365932b8f5dc419439ab4e2577_02a085407e751d00b5dc88f1bd5e8247->ea10d51bcf88862dbcc36eb292017dfd\+45/.match(prov_svg)
+    assert_match /#{collection1_id}->#{stage2_id}/, prov_svg
+    assert_match /#{collection1_id}->#{stage3_id}/, prov_svg
 
-    # File::open "./tmp/stuff2.svg", "w" do |f|
-    #   f.write "<?xml version=\"1.0\" ?>\n"
-    #   f.write prov_svg
-    # end
+    assert_match /#{stage2_id}->#{stage2_out}/, prov_svg
+    assert_match /#{stage3_id}->#{stage3_out}/, prov_svg
 
   end
 
diff --git a/apps/workbench/test/integration/pipeline_instances_test.rb b/apps/workbench/test/integration/pipeline_instances_test.rb
index 3d7c348..6f95b3d 100644
--- a/apps/workbench/test/integration/pipeline_instances_test.rb
+++ b/apps/workbench/test/integration/pipeline_instances_test.rb
@@ -134,7 +134,7 @@ class PipelineInstancesTest < ActionDispatch::IntegrationTest
     # since the pipeline component has a job, expect to see the graph
     assert page.has_text? 'Graph'
     click_link 'Graph'
-    assert page.has_text? 'script_version'
+    page.assert_selector "#provenance_graph"
   end
 
   test 'pipeline description' do
diff --git a/services/api/app/controllers/arvados/v1/collections_controller.rb b/services/api/app/controllers/arvados/v1/collections_controller.rb
index dbcc046..f546a4a 100644
--- a/services/api/app/controllers/arvados/v1/collections_controller.rb
+++ b/services/api/app/controllers/arvados/v1/collections_controller.rb
@@ -76,15 +76,16 @@ class Arvados::V1::CollectionsController < ApplicationController
 
     if loc
       # uuid is a portable_data_hash
-      c = Collection.readable_by(*@read_users).where(portable_data_hash: loc.to_s).all
+      collections = Collection.readable_by(*@read_users).where(portable_data_hash: loc.to_s)
+      c = collections.limit(2).all
       if c.size == 1
         visited[loc.to_s] = c[0]
       elsif c.size > 1
-        named = c.select {|n| not n.name.nil? and not n.name.empty? }
-        if named.any?
+        name = collections.limit(1).where("name <> ''").first
+        if name
           visited[loc.to_s] = {
             portable_data_hash: c[0].portable_data_hash,
-            name: "#{named[0].name} + #{c.size-1} more"
+            name: "#{name.name} + #{collections.count-1} more"
           }
         else
           visited[loc.to_s] = {

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list