package eu.betaas.taas.taasvmmanager.openstack; import static org.junit.Assert.*; import java.util.List; import org.junit.Test; import eu.betaas.taas.taasvmmanager.api.datamodel.InstanceType; import eu.betaas.taas.taasvmmanager.occi.OCCIException; import eu.betaas.taas.taasvmmanager.occi.datamodel.Compute; import eu.betaas.taas.taasvmmanager.occi.datamodel.ComputeCollection; import eu.betaas.taas.taasvmmanager.occi.datamodel.ComputeState; import eu.betaas.taas.taasvmmanager.occi.datamodel.InstanceTypeCollection; import eu.betaas.taas.taasvmmanager.occi.datamodel.Network; import eu.betaas.taas.taasvmmanager.occi.datamodel.NetworkCollection; import eu.betaas.taas.taasvmmanager.occi.datamodel.Storage; import eu.betaas.taas.taasvmmanager.occi.datamodel.StorageCollection; import eu.betaas.taas.taasvmmanager.occi.datamodel.StorageType; import eu.betaas.taas.taasvmmanager.occi.datamodel.User.Quota; import eu.betaas.taas.taasvmmanager.openstack.parser.OpenStackJSONParser; import eu.betaas.taas.taasvmmanager.openstack.parser.OpenStackJSONParser; public class OpenStackJSONParserTest { /******* Test XML responses *******/ private static String AUTHORIZATIONRESPONSE = "{" + " \"access\": {" + " \"token\": {" + " \"issued_at\": \"2014-01-30T15:30:58.819584\"," + " \"expires\": \"2014-01-31T15:30:58Z\"," + " \"id\": \"aaaaa-bbbbb-ccccc-dddd\"," + " \"tenant\": {" + " \"description\": null," + " \"enabled\": true," + " \"id\": \"fc394f2ab2df4114bde39905f800dc57\"," + " \"name\": \"demo\"" + " }" + " }," + " \"serviceCatalog\": [" + " {" + " \"endpoints\": [" + " {" + " \"adminURL\": \"http://23.253.72.207:8774/v2/fc394f2ab2df4114bde39905f800dc57\"," + " \"region\": \"RegionOne\"," + " \"internalURL\": \"http://23.253.72.207:8774/v2/fc394f2ab2df4114bde39905f800dc57\"," + " \"id\": \"2dad48f09e2a447a9bf852bcd93548ef\"," + " \"publicURL\": \"http://23.253.72.207:8774/v2/fc394f2ab2df4114bde39905f800dc57\"" + " }" + " ]," + " \"endpoints_links\": []," + " \"type\": \"compute\"," + " \"name\": \"nova\"" + " }," + " {" + " \"endpoints\": [" + " {" + " \"adminURL\": \"http://23.253.72.207:9696/\"," + " \"region\": \"RegionOne\"," + " \"internalURL\": \"http://23.253.72.207:9696/\"," + " \"id\": \"97c526db8d7a4c88bbb8d68db1bdcdb8\"," + " \"publicURL\": \"http://23.253.72.207:9696/\"" + " }" + " ]," + " \"endpoints_links\": []," + " \"type\": \"network\"," + " \"name\": \"neutron\"" + " }," + " {" + " \"endpoints\": [" + " {" + " \"adminURL\": \"http://23.253.72.207:8776/v2/fc394f2ab2df4114bde39905f800dc57\"," + " \"region\": \"RegionOne\"," + " \"internalURL\": \"http://23.253.72.207:8776/v2/fc394f2ab2df4114bde39905f800dc57\"," + " \"id\": \"93f86dfcbba143a39a33d0c2cd424870\"," + " \"publicURL\": \"http://23.253.72.207:8776/v2/fc394f2ab2df4114bde39905f800dc57\"" + " }" + " ]," + " \"endpoints_links\": []," + " \"type\": \"volumev2\"," + " \"name\": \"cinder\"" + " }," + " {" + " \"endpoints\": [" + " {" + " \"adminURL\": \"http://23.253.72.207:8774/v3\"," + " \"region\": \"RegionOne\"," + " \"internalURL\": \"http://23.253.72.207:8774/v3\"," + " \"id\": \"3eb274b12b1d47b2abc536038d87339e\"," + " \"publicURL\": \"http://23.253.72.207:8774/v3\"" + " }" + " ]," + " \"endpoints_links\": []," + " \"type\": \"computev3\"," + " \"name\": \"nova\"" + " }," + " {" + " \"endpoints\": [" + " {" + " \"adminURL\": \"http://23.253.72.207:3333\"," + " \"region\": \"RegionOne\"," + " \"internalURL\": \"http://23.253.72.207:3333\"," + " \"id\": \"957f1e54afc64d33a62099faa5e980a2\"," + " \"publicURL\": \"http://23.253.72.207:3333\"" + " }" + " ]," + " \"endpoints_links\": []," + " \"type\": \"s3\"," + " \"name\": \"s3\"" + " }," + " {" + " \"endpoints\": [" + " {" + " \"adminURL\": \"http://23.253.72.207:9292\"," + " \"region\": \"RegionOne\"," + " \"internalURL\": \"http://23.253.72.207:9292\"," + " \"id\": \"27d5749f36864c7d96bebf84a5ec9767\"," + " \"publicURL\": \"http://23.253.72.207:9292\"" + " }" + " ]," + " \"endpoints_links\": []," + " \"type\": \"image\"," + " \"name\": \"glance\"" + " }," + " {" + " \"endpoints\": [" + " {" + " \"adminURL\": \"http://23.253.72.207:8776/v1/fc394f2ab2df4114bde39905f800dc57\"," + " \"region\": \"RegionOne\"," + " \"internalURL\": \"http://23.253.72.207:8776/v1/fc394f2ab2df4114bde39905f800dc57\"," + " \"id\": \"37c83a2157f944f1972e74658aa0b139\"," + " \"publicURL\": \"http://23.253.72.207:8776/v1/fc394f2ab2df4114bde39905f800dc57\"" + " }" + " ]," + " \"endpoints_links\": []," + " \"type\": \"volume\"," + " \"name\": \"cinder\"" + " }," + " {" + " \"endpoints\": [" + " {" + " \"adminURL\": \"http://23.253.72.207:8773/services/Admin\"," + " \"region\": \"RegionOne\"," + " \"internalURL\": \"http://23.253.72.207:8773/services/Cloud\"," + " \"id\": \"289b59289d6048e2912b327e5d3240ca\"," + " \"publicURL\": \"http://23.253.72.207:8773/services/Cloud\"" + " }" + " ]," + " \"endpoints_links\": []," + " \"type\": \"ec2\"," + " \"name\": \"ec2\"" + " }," + " {" + " \"endpoints\": [" + " {" + " \"adminURL\": \"http://23.253.72.207:8080\"," + " \"region\": \"RegionOne\"," + " \"internalURL\": \"http://23.253.72.207:8080/v1/AUTH_fc394f2ab2df4114bde39905f800dc57\"," + " \"id\": \"16b76b5e5b7d48039a6e4cc3129545f3\"," + " \"publicURL\": \"http://23.253.72.207:8080/v1/AUTH_fc394f2ab2df4114bde39905f800dc57\"" + " }" + " ]," + " \"endpoints_links\": []," + " \"type\": \"object-store\"," + " \"name\": \"swift\"" + " }," + " {" + " \"endpoints\": [" + " {" + " \"adminURL\": \"http://23.253.72.207:35357/v2.0\"," + " \"region\": \"RegionOne\"," + " \"internalURL\": \"http://23.253.72.207:5000/v2.0\"," + " \"id\": \"26af053673df4ef3a2340c4239e21ea2\"," + " \"publicURL\": \"http://23.253.72.207:5000/v2.0\"" + " }" + " ]," + " \"endpoints_links\": []," + " \"type\": \"identity\"," + " \"name\": \"keystone\"" + " }" + " ]," + " \"user\": {" + " \"username\": \"demo\"," + " \"roles_links\": []," + " \"id\": \"9a6590b2ab024747bc2167c4e064d00d\"," + " \"roles\": [" + " {" + " \"name\": \"Member\"" + " }," + " {" + " \"name\": \"anotherrole\"" + " }" + " ]," + " \"name\": \"demo\"" + " }," + " \"metadata\": {" + " \"is_admin\": 0," + " \"roles\": [" + " \"7598ac3c634d4c3da4b9126a5f67ca2b\"," + " \"f95c0ab82d6045d9805033ee1fbc80d4\"" + " ]" + " }" + " }" + "}"; private static String TENANTSRESPONSE = "{" + " \"tenants\": [" + " {" + " \"id\": \"1234\"," + " \"name\": \"ACME Corp\"," + " \"description\": \"A description ...\"," + " \"enabled\": true" + " }," + " {" + " \"id\": \"3456\"," + " \"name\": \"Iron Works\"," + " \"description\": \"A description ...\"," + " \"enabled\": true" + " }" + " ]," + " \"tenants_links\": []" + "}"; private static String NETWORKCOLLECTIONRESPONSE = "{" + " \"networks\": [" + " {" + " \"status\": \"ACTIVE\"," + " \"subnets\": [" + " \"54d6f61d-db07-451c-9ab3-b9609b6b6f0b\"" + " ]," + " \"name\": \"private-network\"," + " \"provider:physical_network\": null," + " \"admin_state_up\": true," + " \"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\"," + " \"provider:network_type\": \"local\"," + " \"router:external\": true," + " \"shared\": true," + " \"id\": \"d32019d3-bc6e-4319-9c1d-6722fc136a22\"," + " \"provider:segmentation_id\": null" + " }," + " {" + " \"status\": \"ACTIVE\"," + " \"subnets\": [" + " \"08eae331-0402-425a-923c-34f7cfe39c1b\"," + " \"08eae331-0402-425a-923c-34f7cfe39c1c\"" + " ]," + " \"name\": \"private\"," + " \"provider:physical_network\": null," + " \"admin_state_up\": true," + " \"tenant_id\": \"26a7980765d0414dbc1fc1f88cdb7e6e\"," + " \"provider:network_type\": \"local\"," + " \"router:external\": true," + " \"shared\": true," + " \"id\": \"db193ab3-96e3-4cb3-8fc5-05f4296d0324\"," + " \"provider:segmentation_id\": null" + " }" + " ]" + "}"; private static String NETWORKCOLLECTIONMALFORMEDRESPONSE = "{" + " \"networks\": [" + " {" + " \"status\": \"ACTIVE\"," + " \"subnets\": [" + " \"54d6f61d-db07-451c-9ab3-b9609b6b6f0b\"" + " ]," + " \"name\": \"private-network\"," + " \"provider:physical_network\": null," + " \"admin_state_up\": true," + " \"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\"," + " \"provider:network_type\": \"local\"," + " \"router:external\": true," + " \"shared\": true," + " \"id\": \"d32019d3-bc6e-4319-9c1d-6722fc136a22\"," + " \"provider:segmentation_id\": null" + " }," + " {" + " \"status\": \"ACTIVE\"," + " \"subnets\": [" + " \"08eae331-0402-425a-923c-34f7cfe39c1b\"" + " ]," + " \"name\": \"private\"," + " \"provider:physical_network\": null," + " \"admin_state_up\": true," + " \"tenant_id\": \"26a7980765d0414dbc1fc1f88cdb7e6e\"," + " \"provider:network_type\": \"local\"," + " \"router:external\": true," + " \"shared\": true," + " \"provider:segmentation_id\": null" + " }" + " ]" + "}"; private static String NETWORKRESPONSE = "{" + " \"network\": {" + " \"status\": \"ACTIVE\"," + " \"subnets\": [" + " \"54d6f61d-db07-451c-9ab3-b9609b6b6f0b\"" + " ]," + " \"name\": \"private-network\"," + " \"provider:physical_network\": null," + " \"admin_state_up\": true," + " \"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\"," + " \"provider:network_type\": \"local\"," + " \"router:external\": true," + " \"shared\": true," + " \"id\": \"d32019d3-bc6e-4319-9c1d-6722fc136a22\"," + " \"provider:segmentation_id\": null" + " }" + "}"; private static String NETWORKMALFORMEDRESPONSE = "{" + " \"network\": {" + " \"status\": \"ACTIVE\"," + " \"subnets\": [" + " \"54d6f61d-db07-451c-9ab3-b9609b6b6f0b\"" + " ]," + " \"provider:physical_network\": null," + " \"admin_state_up\": true," + " \"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\"," + " \"provider:network_type\": \"local\"," + " \"router:external\": true," + " \"shared\": true," + " \"id\": \"d32019d3-bc6e-4319-9c1d-6722fc136a22\"," + " \"provider:segmentation_id\": null" + " }" + "}"; private static String SUBNETCOLLECTIONRESPONSE = "{" + " \"subnets\": [" + " {" + " \"name\": \"private-subnet\"," + " \"enable_dhcp\": true," + " \"network_id\": \"db193ab3-96e3-4cb3-8fc5-05f4296d0324\"," + " \"tenant_id\": \"26a7980765d0414dbc1fc1f88cdb7e6e\"," + " \"dns_nameservers\": []," + " \"allocation_pools\": [" + " {" + " \"start\": \"10.0.0.2\"," + " \"end\": \"10.0.0.254\"" + " }" + " ]," + " \"host_routes\": []," + " \"ip_version\": 4," + " \"gateway_ip\": \"10.0.0.1\"," + " \"cidr\": \"10.0.0.0/24\"," + " \"id\": \"08eae331-0402-425a-923c-34f7cfe39c1b\"" + " }," + " {" + " \"name\": \"my_subnet\"," + " \"enable_dhcp\": true," + " \"network_id\": \"d32019d3-bc6e-4319-9c1d-6722fc136a22\"," + " \"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\"," + " \"dns_nameservers\": []," + " \"allocation_pools\": [" + " {" + " \"start\": \"192.0.0.2\"," + " \"end\": \"192.255.255.254\"" + " }" + " ]," + " \"host_routes\": []," + " \"ip_version\": 4," + " \"gateway_ip\": \"192.0.0.1\"," + " \"cidr\": \"192.0.0.0/8\"," + " \"id\": \"54d6f61d-db07-451c-9ab3-b9609b6b6f0b\"" + " }" + " ]" + "}"; private static String SUBNETCOLLECTIONMALFORMEDRESPONSE = "{" + " \"subnets\": [" + " {" + " \"name\": \"private-subnet\"," + " \"enable_dhcp\": true," + " \"network_id\": \"db193ab3-96e3-4cb3-8fc5-05f4296d0324\"," + " \"tenant_id\": \"26a7980765d0414dbc1fc1f88cdb7e6e\"," + " \"dns_nameservers\": []," + " \"allocation_pools\": [" + " {" + " \"start\": \"10.0.0.2\"," + " \"end\": \"10.0.0.254\"" + " }" + " ]," + " \"host_routes\": []," + " \"ip_version\": 4," + " \"gateway_ip\": \"10.0.0.1\"," + " \"cidr\": \"10.0.0.0/24\"," + " \"id\": \"08eae331-0402-425a-923c-34f7cfe39c1b\"" + " }," + " {" + " \"enable_dhcp\": true," + " \"network_id\": \"d32019d3-bc6e-4319-9c1d-6722fc136a22\"," + " \"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\"," + " \"dns_nameservers\": []," + " \"allocation_pools\": [" + " {" + " \"start\": \"192.0.0.2\"," + " \"end\": \"192.255.255.254\"" + " }" + " ]," + " \"host_routes\": []," + " \"ip_version\": 4," + " \"gateway_ip\": \"192.0.0.1\"," + " \"cidr\": \"192.0.0.0/8\"," + " \"id\": \"54d6f61d-db07-451c-9ab3-b9609b6b6f0b\"" + " }" + " ]" + "}"; private static String SUBNETRESPONSE = "{" + " \"subnet\": {" + " \"name\": \"test_subnet_1\"," + " \"enable_dhcp\": true," + " \"network_id\": \"d32019d3-bc6e-4319-9c1d-6722fc136a22\"," + " \"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\"," + " \"dns_nameservers\": []," + " \"allocation_pools\": [" + " {" + " \"start\": \"192.0.0.2\"," + " \"end\": \"192.255.255.254\"" + " }" + " ]," + " \"host_routes\": []," + " \"ip_version\": 4," + " \"gateway_ip\": \"192.0.0.1\"," + " \"cidr\": \"192.0.0.0/8\"," + " \"id\": \"54d6f61d-db07-451c-9ab3-b9609b6b6f0b\"" + " }" + "}"; private static String SUBNETMALFORMEDRESPONSE = "{" + " \"subnet\": {" + " \"name\": \"my_subnet\"," + " \"enable_dhcp\": true," + " \"network_id\": \"d32019d3-bc6e-4319-9c1d-6722fc136a22\"," + " \"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\"," + " \"dns_nameservers\": []," + " \"allocation_pools\": [" + " {" + " \"start\": \"192.0.0.2\"," + " \"end\": \"192.255.255.254\"" + " }" + " ]," + " \"host_routes\": []," + " \"ip_version\": 4," + " \"gateway_ip\": \"192.0.0.1\"," + " \"id\": \"54d6f61d-db07-451c-9ab3-b9609b6b6f0b\"" + " }" + "}"; private static String STORAGECOLLECTIONRESPONSE = "{" + " \"volumes\": [" + " {" + " \"id\": \"521752a6-acf6-4b2d-bc7a-119f9148cd8c\"," + " \"display_name\": \"vol-004\"," + " \"display_description\": \"Another volume.\"," + " \"size\": 30," + " \"volume_type\": \"289da7f8-6440-407c-9fb4-7db01ec49164\"," + " \"metadata\": {" + " \"contents\": \"junk\"" + " }," + " \"availability_zone\": \"us-east1\"," + " \"snapshot_id\": null," + " \"attachments\": []," + " \"created_at\": \"2012-02-14T20:53:07Z\"" + " }," + " {" + " \"id\": \"76b8950a-8594-4e5b-8dce-0dfa9c696358\"," + " \"display_name\": \"vol-003\"," + " \"display_description\": \"Yet another volume.\"," + " \"size\": 25," + " \"volume_type\": \"96c3bda7-c82a-4f50-be73-ca7621794835\"," + " \"metadata\": {}," + " \"availability_zone\": \"us-east2\"," + " \"snapshot_id\": null," + " \"attachments\": []," + " \"created_at\": \"2012-03-15T19:10:03Z\"" + " }" + " ]" + "}"; private static String STORAGECOLLECTIONMALFORMEDRESPONSE = "{" + " \"volumes\": [" + " {" + " \"id\": \"521752a6-acf6-4b2d-bc7a-119f9148cd8c\"," + " \"display_name\": \"vol-001\"," + " \"display_description\": \"Another volume.\"," + " \"size\": 30," + " \"volume_type\": \"289da7f8-6440-407c-9fb4-7db01ec49164\"," + " \"metadata\": {" + " \"contents\": \"junk\"" + " }," + " \"availability_zone\": \"us-east1\"," + " \"snapshot_id\": null," + " \"attachments\": []," + " \"created_at\": \"2012-02-14T20:53:07Z\"" + " }," + " {" + " \"display_name\": \"vol-002\"," + " \"display_description\": \"Yet another volume.\"," + " \"size\": 25," + " \"volume_type\": \"96c3bda7-c82a-4f50-be73-ca7621794835\"," + " \"metadata\": {}," + " \"availability_zone\": \"us-east2\"," + " \"snapshot_id\": null," + " \"attachments\": []," + " \"created_at\": \"2012-03-15T19:10:03Z\"" + " }" + " ]" + "}"; private static String STORAGERESPONSE = "{" + " \"volume\": {" + " \"id\": \"521752a6-acf6-4b2d-bc7a-119f9148cd8c\"," + " \"display_name\": \"vol-001\"," + " \"display_description\": \"Another volume.\"," + " \"size\": 30," + " \"volume_type\": \"289da7f8-6440-407c-9fb4-7db01ec49164\"," + " \"metadata\": {" + " \"contents\": \"junk\"" + " }," + " \"availability_zone\": \"us-east1\"," + " \"bootable\": \"false\"," + " \"snapshot_id\": null," + " \"attachments\": []," + " \"created_at\": \"2012-02-14T20:53:07Z\"" + " }" + "}"; private static String STORAGEMALFORMEDRESPONSE = "{" + " \"volume\": {" + " \"id\": \"521752a6-acf6-4b2d-bc7a-119f9148cd8c\"," + " \"display_name\": \"vol-001\"," + " \"display_description\": \"Another volume.\"," + " \"volume_type\": \"289da7f8-6440-407c-9fb4-7db01ec49164\"," + " \"metadata\": {" + " \"contents\": \"junk\"" + " }," + " \"availability_zone\": \"us-east1\"," + " \"bootable\": \"false\"," + " \"snapshot_id\": null," + " \"attachments\": []," + " \"created_at\": \"2012-02-14T20:53:07Z\"" + " }" + "}"; private static String IMAGECOLLECTIONRESPONSE = "{" + " \"images\": [" + " {" + " \"status\": \"active\"," + " \"name\": \"cirros-0.3.2-x86_64-disk\"," + " \"tags\": []," + " \"container_format\": \"bare\"," + " \"created_at\": \"2014-11-07T17:07:06Z\"," + " \"disk_format\": \"qcow2\"," + " \"updated_at\": \"2014-11-07T17:19:09Z\"," + " \"visibility\": \"public\"," + " \"self\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27\"," + " \"min_disk\": 0," + " \"protected\": false," + " \"id\": \"1bea47ed-f6a9-463b-b423-14b9cca9ad27\"," + " \"file\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file\"," + " \"checksum\": \"64d7c1cd2b6f60c92c14662941cb7913\"," + " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\"," + " \"size\": 13167616," + " \"min_ram\": 0," + " \"schema\": \"/v2/schemas/image\"" + " }," + " {" + " \"status\": \"active\"," + " \"name\": \"F17-x86_64-cfntools\"," + " \"tags\": []," + " \"container_format\": \"bare\"," + " \"created_at\": \"2014-10-30T08:23:39Z\"," + " \"disk_format\": \"qcow2\"," + " \"updated_at\": \"2014-11-03T16:40:10Z\"," + " \"visibility\": \"public\"," + " \"self\": \"/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c\"," + " \"min_disk\": 0," + " \"protected\": false," + " \"id\": \"781b3762-9469-4cec-b58d-3349e5de4e9c\"," + " \"file\": \"/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c/file\"," + " \"checksum\": \"afab0f79bac770d61d24b4d0560b5f70\"," + " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\"," + " \"size\": 476704768," + " \"min_ram\": 0," + " \"schema\": \"/v2/schemas/image\"" + " }" + " ]," + " \"schema\": \"/v2/schemas/images\"," + " \"first\": \"/v2/images\"" + "}"; private static String IMAGECOLLECTIONMALFORMEDRESPONSE = "{" + " \"images\": [" + " {" + " \"status\": \"active\"," + " \"name\": \"cirros-0.3.2-x86_64-disk\"," + " \"tags\": []," + " \"container_format\": \"bare\"," + " \"created_at\": \"2014-11-07T17:07:06Z\"," + " \"disk_format\": \"qcow2\"," + " \"updated_at\": \"2014-11-07T17:19:09Z\"," + " \"visibility\": \"public\"," + " \"self\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27\"," + " \"min_disk\": 0," + " \"protected\": false," + " \"id\": \"1bea47ed-f6a9-463b-b423-14b9cca9ad27\"," + " \"file\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file\"," + " \"checksum\": \"64d7c1cd2b6f60c92c14662941cb7913\"," + " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\"," + " \"min_ram\": 0," + " \"schema\": \"/v2/schemas/image\"" + " }," + " {" + " \"status\": \"active\"," + " \"tags\": []," + " \"container_format\": \"bare\"," + " \"created_at\": \"2014-10-30T08:23:39Z\"," + " \"disk_format\": \"qcow2\"," + " \"updated_at\": \"2014-11-03T16:40:10Z\"," + " \"visibility\": \"public\"," + " \"self\": \"/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c\"," + " \"min_disk\": 0," + " \"protected\": false," + " \"id\": \"781b3762-9469-4cec-b58d-3349e5de4e9c\"," + " \"file\": \"/v2/images/781b3762-9469-4cec-b58d-3349e5de4e9c/file\"," + " \"checksum\": \"afab0f79bac770d61d24b4d0560b5f70\"," + " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\"," + " \"size\": 476704768," + " \"min_ram\": 0," + " \"schema\": \"/v2/schemas/image\"" + " }" + " ]," + " \"schema\": \"/v2/schemas/images\"," + " \"first\": \"/v2/images\"" + "}"; private static String IMAGERESPONSE = "{" + " \"status\": \"active\"," + " \"name\": \"cirros-0.3.2-x86_64-disk\"," + " \"tags\": []," + " \"container_format\": \"bare\"," + " \"created_at\": \"2014-05-05T17:15:10Z\"," + " \"disk_format\": \"qcow2\"," + " \"updated_at\": \"2014-05-05T17:15:11Z\"," + " \"visibility\": \"public\"," + " \"self\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27\"," + " \"min_disk\": 0," + " \"protected\": false," + " \"id\": \"1bea47ed-f6a9-463b-b423-14b9cca9ad27\"," + " \"file\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file\"," + " \"checksum\": \"64d7c1cd2b6f60c92c14662941cb7913\"," + " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\"," + " \"size\": 13167616," + " \"min_ram\": 0," + " \"schema\": \"/v2/schemas/image\"" + "}"; private static String IMAGEMALFORMEDRESPONSE = "{" + " \"status\": \"active\"," + " \"name\": \"cirros-0.3.2-x86_64-disk\"," + " \"tags\": []," + " \"container_format\": \"bare\"," + " \"created_at\": \"2014-05-05T17:15:10Z\"," + " \"disk_format\": \"qcow2\"," + " \"updated_at\": \"2014-05-05T17:15:11Z\"," + " \"visibility\": \"public\"," + " \"self\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27\"," + " \"min_disk\": 0," + " \"protected\": false," + " \"file\": \"/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file\"," + " \"checksum\": \"64d7c1cd2b6f60c92c14662941cb7913\"," + " \"owner\": \"5ef70662f8b34079a6eddb8da9d75fe8\"," + " \"size\": 13167616," + " \"min_ram\": 0," + " \"schema\": \"/v2/schemas/image\"" + "}"; private static String COMPUTECOLLECTIONRESPONSE = "{" + " \"servers\": [" + " {" + " \"id\": \"616fb98f-46ca-475e-917e-2563e5a8cd19\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd19\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd19\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"new-server-test1\"" + " }," + " {" + " \"id\": \"616fb98f-46ca-475e-917e-2563e5a8cd20\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd20\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd20\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"new-server-test2\"" + " }" + " ]" + "}"; private static String COMPUTECOLLECTIONMALFORMEDRESPONSE = "{" + " \"servers\": [" + " {" + " \"id\": \"616fb98f-46ca-475e-917e-2563e5a8cd19\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd19\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd19\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"new-server-test1\"" + " }," + " {" + " \"id\": \"616fb98f-46ca-475e-917e-2563e5a8cd20\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd20\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/servers/616fb98f-46ca-475e-917e-2563e5a8cd20\"," + " \"rel\": \"bookmark\"" + " }" + " ]" + " }" + " ]" + "}"; private static String COMPUTERESPONSE = "{" + " \"server\": {" + " \"accessIPv4\": \"\"," + " \"accessIPv6\": \"\"," + " \"addresses\": {" + " \"private\": [" + " {" + " \"addr\": \"192.168.0.3\"," + " \"version\": 4" + " }" + " ]" + " }," + " \"created\": \"2012-08-20T21:11:09Z\"," + " \"flavor\": {" + " \"id\": \"1\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/1\"," + " \"rel\": \"bookmark\"" + " }" + " ]" + " }," + " \"hostId\": \"65201c14a29663e06d0748e561207d998b343e1d164bfa0aafa9c45d\"," + " \"id\": \"893c7791-f1df-4c3d-8383-3caae9656c62\"," + " \"image\": {" + " \"id\": \"70a599e0-31e7-49b7-b260-868f441e862b\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b\"," + " \"rel\": \"bookmark\"" + " }" + " ]" + " }," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/servers/893c7791-f1df-4c3d-8383-3caae9656c62\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/servers/893c7791-f1df-4c3d-8383-3caae9656c62\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"metadata\": {" + " \"My Server Name\": \"Apache1\"" + " }," + " \"name\": \"new-server-test\"," + " \"progress\": 0," + " \"status\": \"ACTIVE\"," + " \"tenant_id\": \"openstack\"," + " \"updated\": \"2012-08-20T21:11:09Z\"," + " \"user_id\": \"fake\"" + " }" + "}"; private static String COMPUTEMALFORMEDRESPONSE = "{" + " \"server\": {" + " \"accessIPv4\": \"\"," + " \"accessIPv6\": \"\"," + " \"addresses\": {" + " \"private\": [" + " {" + " \"addr\": \"192.168.0.3\"," + " \"version\": 4" + " }" + " ]" + " }," + " \"created\": \"2012-08-20T21:11:09Z\"," + " \"flavor\": {" + " \"id\": \"1\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/1\"," + " \"rel\": \"bookmark\"" + " }" + " ]" + " }," + " \"hostId\": \"65201c14a29663e06d0748e561207d998b343e1d164bfa0aafa9c45d\"," + " \"id\": \"893c7791-f1df-4c3d-8383-3caae9656c62\"," + " \"image\": {" + " \"id\": \"70a599e0-31e7-49b7-b260-868f441e862b\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b\"," + " \"rel\": \"bookmark\"" + " }" + " ]" + " }," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/servers/893c7791-f1df-4c3d-8383-3caae9656c62\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/servers/893c7791-f1df-4c3d-8383-3caae9656c62\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"metadata\": {" + " \"My Server Name\": \"Apache1\"" + " }," + " \"name\": \"new-server-test\"," + " \"progress\": 0," + " \"tenant_id\": \"openstack\"," + " \"updated\": \"2012-08-20T21:11:09Z\"," + " \"user_id\": \"fake\"" + " }" + "}"; private static String VOLUMEATTACHMENTRESPONSE = "{" + " \"volumeAttachments\": [" + " {" + " \"device\": \"/dev/sdd\"," + " \"id\": \"a26887c6-c47b-4654-abb5-dfadf7d3f803\"," + " \"serverId\": \"4d8c3732-a248-40ed-bebc-539a6ffd25c0\"," + " \"volumeId\": \"a26887c6-c47b-4654-abb5-dfadf7d3f803\"" + " }," + " {" + " \"device\": \"/dev/sdc\"," + " \"id\": \"a26887c6-c47b-4654-abb5-dfadf7d3f804\"," + " \"serverId\": \"4d8c3732-a248-40ed-bebc-539a6ffd25c0\"," + " \"volumeId\": \"a26887c6-c47b-4654-abb5-dfadf7d3f804\"" + " }" + " ]" + "}"; private static String VOLUMEATTACHMENTMALFORMEDRESPONSE = "{" + " \"volumeAttachments\": [" + " {" + " \"device\": \"/dev/sdd\"," + " \"id\": \"a26887c6-c47b-4654-abb5-dfadf7d3f803\"," + " \"serverId\": \"4d8c3732-a248-40ed-bebc-539a6ffd25c0\"" + " }," + " {" + " \"device\": \"/dev/sdc\"," + " \"id\": \"a26887c6-c47b-4654-abb5-dfadf7d3f804\"," + " \"serverId\": \"4d8c3732-a248-40ed-bebc-539a6ffd25c0\"," + " \"volumeId\": \"a26887c6-c47b-4654-abb5-dfadf7d3f804\"" + " }" + " ]" + "}"; private static String VIRTUALINTERFACESRESPONSE = "{" + " \"interfaceAttachments\": [" + " {" + " \"port_state\": \"ACTIVE\"," + " \"fixed_ips\": [" + " {" + " \"subnet_id\": \"a26887c6-c47b-4654-abb5-dfadf7d3f803\"," + " \"ip_address\": \"192.168.1.3\"" + " }" + " ]," + " \"net_id\": \"3cb9bc59-5699-4588-a4b1-b87f96708bc6\"," + " \"port_id\": \"ce531f90-199f-48c0-816c-13e38010b442\"," + " \"mac_addr\": \"fa:16:3e:4c:2c:30\"" + " }" + " ]" + "}"; private static String VIRTUALINTERFACESMALFORMEDRESPONSE = "{" + " \"interfaceAttachments\": [" + " {" + " \"port_state\": \"ACTIVE\"," + " \"fixed_ips\": [" + " {" + " \"subnet_id\": \"f8a6e8f8-c2ec-497c-9f23-da9616de54ef\"," + " \"ip_address\": \"192.168.1.3\"" + " }" + " ]," + " \"net_id\": \"3cb9bc59-5699-4588-a4b1-b87f96708bc6\"," + " \"port_id\": \"ce531f90-199f-48c0-816c-13e38010b442\"" + " }" + " ]" + "}"; private static String INSTANCETYPECOLLECTIONRESPONSE = "{" + " \"flavors\": [" + " {" + " \"id\": \"1\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/1\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/1\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"m1.tiny\"" + " }," + " {" + " \"id\": \"2\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/2\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/2\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"m1.small\"" + " }," + " {" + " \"id\": \"3\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/3\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/3\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"m1.medium\"" + " }," + " {" + " \"id\": \"4\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/4\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/4\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"m1.large\"" + " }," + " {" + " \"id\": \"5\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/5\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/5\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"m1.xlarge\"" + " }" + " ]" + "}"; private static String INSTANCETYPECOLLECTIONMALFORMEDRESPONSE = "{" + " \"flavors\": [" + " {" + " \"id\": \"1\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/1\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/1\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"m1.tiny\"" + " }," + " {" + " \"id\": \"2\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/2\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/2\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"m1.small\"" + " }," + " {" + " \"id\": \"3\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/3\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/3\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"m1.medium\"" + " }," + " {" + " \"id\": \"4\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/4\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/4\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"m1.large\"" + " }," + " {" + " \"id\": \"5\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/5\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/5\"," + " \"rel\": \"bookmark\"" + " }" + " ]" + " }" + " ]" + "}"; private static String INSTANCETYPERESPONSE = "{" + " \"flavor\": {" + " \"disk\": 1," + " \"id\": \"1\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/1\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/1\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"m1.tiny\"," + " \"ram\": 512," + " \"vcpus\": 1" + " }" + "}"; private static String INSTANCETYPEMALFORMEDRESPONSE = "{" + " \"flavor\": {" + " \"disk\": 1," + " \"id\": \"1\"," + " \"links\": [" + " {" + " \"href\": \"http://openstack.example.com/v2/openstack/flavors/1\"," + " \"rel\": \"self\"" + " }," + " {" + " \"href\": \"http://openstack.example.com/openstack/flavors/1\"," + " \"rel\": \"bookmark\"" + " }" + " ]," + " \"name\": \"m1.tiny\"," + " \"ram\": 512" + " }" + "}"; private static String COMPUTEQUOTARESPONSE = "{" + " \"quota_set\": {" + " \"cores\": 20," + " \"fixed_ips\": -1," + " \"floating_ips\": 10," + " \"id\": \"fake_tenant\"," + " \"injected_file_content_bytes\": 10240," + " \"injected_file_path_bytes\": 255," + " \"injected_files\": 5," + " \"instances\": 10," + " \"key_pairs\": 100," + " \"metadata_items\": 128," + " \"ram\": 51200," + " \"security_group_rules\": 20," + " \"security_groups\": 10," + " \"server_group_members\": 10," + " \"server_groups\": 10" + " }" + "}"; private static String COMPUTEQUOTAMALFORMEDRESPONSE = "{" + " \"quota_set\": {" + " \"fixed_ips\": -1," + " \"floating_ips\": 10," + " \"id\": \"fake_tenant\"," + " \"injected_file_content_bytes\": 10240," + " \"injected_file_path_bytes\": 255," + " \"injected_files\": 5," + " \"instances\": 10," + " \"key_pairs\": 100," + " \"metadata_items\": 128," + " \"ram\": 51200," + " \"security_group_rules\": 20," + " \"security_groups\": 10," + " \"server_group_members\": 10," + " \"server_groups\": 10" + " }" + "}"; private static String STORAGEQUOTARESPONSE = "{" + " \"limits\": {" + " \"rate\": []," + " \"absolute\": {" + " \"totalSnapshotsUsed\": 0," + " \"maxTotalVolumeGigabytes\": 1000," + " \"totalGigabytesUsed\": 0," + " \"maxTotalSnapshots\": 10," + " \"totalVolumesUsed\": 0," + " \"maxTotalVolumes\": 10" + " }" + " }" + "}"; private static String STORAGEQUOTAMALFORMEDRESPONSE = "{" + " \"limits\": {" + " \"rate\": []," + " \"absolute\": {" + " \"totalSnapshotsUsed\": 0," + " \"maxTotalVolumeGigabytes\": 1000," + " \"totalGigabytesUsed\": 0," + " \"maxTotalSnapshots\": 10," + " \"totalVolumesUsed\": 0" + " }" + " }" + "}"; @Test public void testParseAuthorizationResponse() { String[] results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseAuthorizationResponse(AUTHORIZATIONRESPONSE); assertEquals(6, results.length); assertEquals("aaaaa-bbbbb-ccccc-dddd", results[0]); assertEquals("demo", results[1]); assertEquals("9a6590b2ab024747bc2167c4e064d00d", results[2]); assertEquals( "http://23.253.72.207:8774", results[3]); assertEquals( "http://23.253.72.207:8776", results[4]); assertEquals("http://23.253.72.207:9696/", results[5]); } catch (OCCIException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testParseTenantsResponse() { String result; OpenStackJSONParser parser = new OpenStackJSONParser(); try { result = parser.parseTenantsResponse(TENANTSRESPONSE, "ACME Corp"); assertEquals("1234", result); result = parser.parseTenantsResponse(TENANTSRESPONSE, "ACME Corpus"); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseNetworkCollectionResponse() { String[][] results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseNetworkCollectionResponse(NETWORKCOLLECTIONRESPONSE); assertEquals(2, results.length); assertEquals(3, results[0].length); assertEquals(4, results[1].length); assertEquals("d32019d3-bc6e-4319-9c1d-6722fc136a22", results[0][0]); assertEquals("private-network", results[0][1]); assertEquals("54d6f61d-db07-451c-9ab3-b9609b6b6f0b", results[0][2]); assertEquals("db193ab3-96e3-4cb3-8fc5-05f4296d0324", results[1][0]); assertEquals("private", results[1][1]); assertEquals("08eae331-0402-425a-923c-34f7cfe39c1b", results[1][2]); assertEquals("08eae331-0402-425a-923c-34f7cfe39c1c", results[1][3]); results = parser.parseNetworkCollectionResponse( NETWORKCOLLECTIONMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseCreatedNetworkResponse() { String[] results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseCreatedNetworkResponse(NETWORKRESPONSE); assertEquals(2, results.length); assertEquals("d32019d3-bc6e-4319-9c1d-6722fc136a22", results[0]); assertEquals("private-network", results[1]); results = parser.parseCreatedNetworkResponse( NETWORKMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseSubnetCollectionResponse() { NetworkCollection results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseSubnetCollectionResponse(SUBNETCOLLECTIONRESPONSE); assertEquals(2, results.getNetwork().size()); assertEquals("08eae331-0402-425a-923c-34f7cfe39c1b", results.getNetwork().get(0).getHref()); assertEquals("54d6f61d-db07-451c-9ab3-b9609b6b6f0b", results.getNetwork().get(1).getHref()); assertEquals("private-subnet", results.getNetwork().get(0).getName()); assertEquals("my_subnet", results.getNetwork().get(1).getName()); results = parser.parseSubnetCollectionResponse( SUBNETCOLLECTIONMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseSubnetResponse() { Network results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseSubnetResponse(SUBNETRESPONSE); assertEquals("192.0.0.0/8", results.getAddress()); assertEquals("54d6f61d-db07-451c-9ab3-b9609b6b6f0b", results.getHref()); assertEquals("test_subnet_1", results.getName()); assertEquals("C", results.getSize()); results = parser.parseSubnetResponse( SUBNETMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseStorageCollectionResponse() { StorageCollection results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseStorageCollectionResponse(STORAGECOLLECTIONRESPONSE); assertEquals(2, results.getStorage().size()); assertEquals("521752a6-acf6-4b2d-bc7a-119f9148cd8c", results.getStorage().get(0).getHref()); assertEquals("76b8950a-8594-4e5b-8dce-0dfa9c696358", results.getStorage().get(1).getHref()); assertEquals("vol-004", results.getStorage().get(0).getName()); assertEquals("vol-003", results.getStorage().get(1).getName()); results = parser.parseStorageCollectionResponse( STORAGECOLLECTIONMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseStorageResponse() { Storage results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseStorageResponse(STORAGERESPONSE); assertEquals("Another volume.", results.getDescription()); assertEquals("521752a6-acf6-4b2d-bc7a-119f9148cd8c", results.getHref()); assertEquals("vol-001", results.getName()); assertEquals("30", results.getSize()); assertEquals(StorageType.DATABLOCK, results.getType()); results = parser.parseStorageResponse( STORAGEMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseImageCollectionResponse() { StorageCollection results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseImageCollectionResponse(IMAGECOLLECTIONRESPONSE); assertEquals(2, results.getStorage().size()); assertEquals("1bea47ed-f6a9-463b-b423-14b9cca9ad27", results.getStorage().get(0).getHref()); assertEquals("781b3762-9469-4cec-b58d-3349e5de4e9c", results.getStorage().get(1).getHref()); assertEquals("cirros-0.3.2-x86_64-disk", results.getStorage().get(0).getName()); assertEquals("F17-x86_64-cfntools", results.getStorage().get(1).getName()); results = parser.parseImageCollectionResponse( IMAGECOLLECTIONMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseImageResponse() { Storage results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseImageResponse(IMAGERESPONSE); assertEquals("1bea47ed-f6a9-463b-b423-14b9cca9ad27", results.getHref()); assertEquals("cirros-0.3.2-x86_64-disk", results.getName()); assertEquals("13167616", results.getSize()); assertEquals(StorageType.OS, results.getType()); results = parser.parseImageResponse(IMAGEMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseComputeCollectionResponse() { ComputeCollection results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseComputeCollectionResponse(COMPUTECOLLECTIONRESPONSE); assertEquals(2, results.getCompute().size()); assertEquals("616fb98f-46ca-475e-917e-2563e5a8cd19", results.getCompute().get(0).getHref()); assertEquals("new-server-test1", results.getCompute().get(0).getName()); assertEquals("616fb98f-46ca-475e-917e-2563e5a8cd20", results.getCompute().get(1).getHref()); assertEquals("new-server-test2", results.getCompute().get(1).getName()); results = parser.parseComputeCollectionResponse( COMPUTECOLLECTIONMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseComputeResponse() { Compute results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseComputeResponse(COMPUTERESPONSE); assertEquals("893c7791-f1df-4c3d-8383-3caae9656c62", results.getHref()); assertEquals("new-server-test", results.getName()); assertEquals(ComputeState.ACTIVE, results.getState()); assertEquals("1", results.getInstanceType()); results = parser.parseComputeResponse( COMPUTEMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseAttachedStoragesResponse() { List<Compute.Disk> results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseAttachedStoragesResponse(VOLUMEATTACHMENTRESPONSE); assertEquals(2, results.size()); assertEquals("a26887c6-c47b-4654-abb5-dfadf7d3f803", results.get(0).getStorage().getHref()); assertEquals("a26887c6-c47b-4654-abb5-dfadf7d3f804", results.get(1).getStorage().getHref()); assertEquals("/dev/sdd", results.get(0).getTarget()); assertEquals("/dev/sdc", results.get(1).getTarget()); results = parser.parseAttachedStoragesResponse( VOLUMEATTACHMENTMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseVirtualInterfacesResponse() { List<Compute.Nic> results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseVirtualInterfacesResponse(VIRTUALINTERFACESRESPONSE); assertEquals(1, results.size()); assertEquals("a26887c6-c47b-4654-abb5-dfadf7d3f803", results.get(0).getNetwork().getHref()); assertEquals("fa:16:3e:4c:2c:30", results.get(0).getMac()); results = parser.parseVirtualInterfacesResponse( VIRTUALINTERFACESMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseInstanceTypeCollectionResponse() { InstanceTypeCollection results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseInstanceTypeCollectionResponse( INSTANCETYPECOLLECTIONRESPONSE); assertEquals(5, results.getInstanceType().size()); assertEquals("1", results.getInstanceType().get(0).getHref()); assertEquals("m1.tiny", results.getInstanceType().get(0).getName()); assertEquals("2", results.getInstanceType().get(1).getHref()); assertEquals( "m1.small", results.getInstanceType().get(1).getName()); assertEquals("3", results.getInstanceType().get(2).getHref()); assertEquals( "m1.medium", results.getInstanceType().get(2).getName()); assertEquals("4", results.getInstanceType().get(3).getHref()); assertEquals( "m1.large", results.getInstanceType().get(3).getName()); assertEquals("5", results.getInstanceType().get(4).getHref()); assertEquals( "m1.xlarge", results.getInstanceType().get(4).getName()); results = parser.parseInstanceTypeCollectionResponse( INSTANCETYPECOLLECTIONMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseInstanceTypeResponse() { InstanceType results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseInstanceTypeResponse(INSTANCETYPERESPONSE); assertEquals(1, results.getCpu()); assertEquals("1", results.getHref()); assertEquals(512, results.getMemory()); assertEquals("m1.tiny", results.getName()); results = parser.parseInstanceTypeResponse(INSTANCETYPEMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseComputeQuotaResponse() { Quota results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseComputeQuotaResponse(COMPUTEQUOTARESPONSE); assertEquals(20, results.getCpu()); assertEquals(51200, results.getMemory()); assertEquals(10, results.getNumVms()); results = parser.parseComputeQuotaResponse(COMPUTEQUOTAMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testParseStorageQuotaResponse() { int results; OpenStackJSONParser parser = new OpenStackJSONParser(); try { results = parser.parseStorageQuotaResponse(STORAGEQUOTARESPONSE); assertEquals(10000, results); results = parser.parseStorageQuotaResponse(STORAGEQUOTAMALFORMEDRESPONSE); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testFromOpenStackComputeState() { OpenStackJSONParser parser = new OpenStackJSONParser(); try { assertEquals(ComputeState.ACTIVE, parser.fromOpenStackComputeState("ACTIVE")); assertEquals(ComputeState.PENDING, parser.fromOpenStackComputeState("BUILDING")); assertEquals(ComputeState.DONE, parser.fromOpenStackComputeState("DELETED")); assertEquals(ComputeState.FAILED, parser.fromOpenStackComputeState("ERROR")); assertEquals(ComputeState.RESET, parser.fromOpenStackComputeState("HARD_REBOOT")); assertEquals(ComputeState.RESET, parser.fromOpenStackComputeState("PASSWORD")); assertEquals(ComputeState.SUSPENDED, parser.fromOpenStackComputeState("PAUSED")); assertEquals(ComputeState.REBOOT, parser.fromOpenStackComputeState("REBOOT")); assertEquals(ComputeState.PENDING, parser.fromOpenStackComputeState("REBUILD")); assertEquals(ComputeState.RESET, parser.fromOpenStackComputeState("RESCUED")); assertEquals(ComputeState.RESET, parser.fromOpenStackComputeState("RESIZED")); assertEquals(ComputeState.RESET, parser.fromOpenStackComputeState("REVERT_RESIZE")); assertEquals(ComputeState.SHUTDOWN, parser.fromOpenStackComputeState("SHUTOFF")); assertEquals(ComputeState.DONE, parser.fromOpenStackComputeState("SOFT_DELETED")); assertEquals(ComputeState.STOPPED, parser.fromOpenStackComputeState("STOPPED")); assertEquals(ComputeState.SUSPENDED, parser.fromOpenStackComputeState("SUSPENDED")); assertEquals(ComputeState.FAILED, parser.fromOpenStackComputeState("UNKNOWN")); assertEquals(ComputeState.RESET, parser.fromOpenStackComputeState("VERIFY_RESIZE")); parser.fromOpenStackComputeState("NOT EXISTING ONE"); fail(); } catch (OCCIException e) { assertTrue(true); } } @Test public void testToOpenStackComputeState() { OpenStackJSONParser parser = new OpenStackJSONParser(); try { assertEquals("ACTIVE", parser.toOpenStackComputeState(ComputeState.ACTIVE)); assertEquals("DELETED", parser.toOpenStackComputeState(ComputeState.CANCEL)); assertEquals("DELETED", parser.toOpenStackComputeState(ComputeState.DONE)); assertEquals("ERROR", parser.toOpenStackComputeState(ComputeState.FAILED)); assertEquals("PAUSED", parser.toOpenStackComputeState(ComputeState.HOLD)); assertEquals("BUILDING", parser.toOpenStackComputeState(ComputeState.INIT)); assertEquals("BUILDING", parser.toOpenStackComputeState(ComputeState.PENDING)); assertEquals("REBOOT", parser.toOpenStackComputeState(ComputeState.REBOOT)); assertEquals("REBUILD", parser.toOpenStackComputeState(ComputeState.RESET)); assertEquals("ACTIVE", parser.toOpenStackComputeState(ComputeState.RESUME)); assertEquals("SHUTOFF", parser.toOpenStackComputeState(ComputeState.SHUTDOWN)); assertEquals("STOPPED", parser.toOpenStackComputeState(ComputeState.STOPPED)); assertEquals("SUSPENDED", parser.toOpenStackComputeState(ComputeState.SUSPENDED)); } catch (OCCIException e) { fail(); } } }