You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2014/11/26 12:54:36 UTC
[06/41] stratos git commit: adding cloudstack dependancy
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPodsResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPodsResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPodsResponseTest.java
new file mode 100644
index 0000000..5f8944f
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPodsResponseTest.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Set;
+
+import org.jclouds.cloudstack.domain.AllocationState;
+import org.jclouds.cloudstack.domain.Pod;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ListPodsResponseTest extends BaseSetParserTest<Pod> {
+
+ @Override
+ public String resource() {
+ return "/listpodsresponse.json";
+ }
+
+ @Override
+ @SelectJson("pod")
+ public Set<Pod> expected() {
+ Pod pod1 = Pod.builder()
+ .id("1")
+ .name("Dev Pod 1")
+ .zoneId("1")
+ .zoneName("Dev Zone 1")
+ .gateway("10.26.26.254")
+ .netmask("255.255.255.0")
+ .startIp("10.26.26.50")
+ .endIp("10.26.26.100")
+ .allocationState(AllocationState.ENABLED)
+ .build();
+ Pod pod2 = Pod.builder()
+ .id("2")
+ .name("Dev Pod 2")
+ .zoneId("2")
+ .zoneName("Dev Zone 2")
+ .gateway("10.22.22.254")
+ .netmask("255.255.255.0")
+ .startIp("10.22.22.25")
+ .endIp("10.22.22.50")
+ .allocationState(AllocationState.ENABLED)
+ .build();
+ return ImmutableSet.of(pod1, pod2);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPortForwardingRulesResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPortForwardingRulesResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPortForwardingRulesResponseTest.java
new file mode 100644
index 0000000..6356c7d
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPortForwardingRulesResponseTest.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Set;
+
+import org.jclouds.cloudstack.domain.PortForwardingRule;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.json.config.GsonModule;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+@Test(groups = "unit")
+public class ListPortForwardingRulesResponseTest extends BaseSetParserTest<PortForwardingRule> {
+
+ @Override
+ protected Injector injector() {
+ return Guice.createInjector(new GsonModule() {
+
+ @Override
+ protected void configure() {
+ bind(DateAdapter.class).to(Iso8601DateAdapter.class);
+ super.configure();
+ }
+
+ });
+ }
+
+ @Override
+ public String resource() {
+ return "/listportforwardingrulesresponse.json";
+ }
+
+ @Override
+ @SelectJson("portforwardingrule")
+ public Set<PortForwardingRule> expected() {
+ Set<String> cidrs = ImmutableSet.of("0.0.0.0/1", "128.0.0.0/1");
+ return ImmutableSet.<PortForwardingRule> of(
+ PortForwardingRule.builder().id("15").privatePort(22).protocol(PortForwardingRule.Protocol.TCP)
+ .publicPort(2022).virtualMachineId("3").virtualMachineName("i-3-3-VM").IPAddressId("3")
+ .IPAddress("72.52.126.32").state(PortForwardingRule.State.ACTIVE).CIDRs(cidrs).build(),
+ PortForwardingRule.builder().id("18").privatePort(22).protocol(PortForwardingRule.Protocol.TCP)
+ .publicPort(22).virtualMachineId("89").virtualMachineName("i-3-89-VM").IPAddressId("34")
+ .IPAddress("72.52.126.63").state(PortForwardingRule.State.ACTIVE).build());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPublicIPAddressesResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPublicIPAddressesResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPublicIPAddressesResponseTest.java
new file mode 100644
index 0000000..a9547d4
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListPublicIPAddressesResponseTest.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Set;
+
+import org.jclouds.cloudstack.domain.PublicIPAddress;
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ListPublicIPAddressesResponseTest extends BaseSetParserTest<PublicIPAddress> {
+
+ @Override
+ public String resource() {
+ return "/listpublicipaddressesresponse.json";
+ }
+
+ @Override
+ @SelectJson("publicipaddress")
+ public Set<PublicIPAddress> expected() {
+ return ImmutableSet.of(PublicIPAddress.builder().id("30").IPAddress("72.52.126.59")
+ .allocated(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-02-19T21:15:01-0800")).zoneId("1")
+ .zoneName("San Jose 1").isSourceNAT(false).account("adrian").domainId("1").domain("ROOT")
+ .usesVirtualNetwork(true).isStaticNAT(false).associatedNetworkId("204").networkId("200")
+ .state(PublicIPAddress.State.ALLOCATED).build());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListSSHKeyPairsResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListSSHKeyPairsResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListSSHKeyPairsResponseTest.java
new file mode 100644
index 0000000..c509a34
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListSSHKeyPairsResponseTest.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Set;
+
+import org.jclouds.cloudstack.domain.SshKeyPair;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.json.config.GsonModule;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+@Test(groups = "unit")
+public class ListSSHKeyPairsResponseTest extends BaseSetParserTest<SshKeyPair> {
+
+ @Override
+ protected Injector injector() {
+ return Guice.createInjector(new GsonModule() {
+
+ @Override
+ protected void configure() {
+ bind(DateAdapter.class).to(Iso8601DateAdapter.class);
+ super.configure();
+ }
+
+ });
+
+ }
+
+ @Override
+ public String resource() {
+ return "/listsshkeypairsresponse.json";
+ }
+
+ @Override
+ @SelectJson("sshkeypair")
+ public Set<SshKeyPair> expected() {
+ return ImmutableSet.<SshKeyPair> of(SshKeyPair.builder().name("jclouds-keypair")
+ .fingerprint("1c:06:74:52:3b:99:1c:95:5c:04:c2:f4:ba:77:6e:7b").build());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListSecurityGroupsResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListSecurityGroupsResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListSecurityGroupsResponseTest.java
new file mode 100644
index 0000000..54d06b9
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListSecurityGroupsResponseTest.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Set;
+
+import org.jclouds.cloudstack.domain.IngressRule;
+import org.jclouds.cloudstack.domain.SecurityGroup;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ListSecurityGroupsResponseTest extends BaseSetParserTest<SecurityGroup> {
+
+ @Override
+ public String resource() {
+ return "/listsecuritygroupsresponse.json";
+ }
+
+ @Override
+ @SelectJson("securitygroup")
+ public Set<SecurityGroup> expected() {
+ return ImmutableSet
+ .<SecurityGroup> builder()
+ .add(SecurityGroup
+ .builder()
+ .id("13")
+ .name("default")
+ .description("description")
+ .account("adrian")
+ .domainId("1")
+ .domain("ROOT")
+ .ingressRules(
+ ImmutableSet.of(
+
+ IngressRule.builder().id("5").protocol("tcp").startPort(22).endPort(22)
+ .securityGroupName("adriancole").account("adrian").build(),
+
+ IngressRule.builder().id("6").protocol("udp").startPort(11).endPort(11).CIDR("1.1.1.1/24")
+ .build())).build())
+ .add(SecurityGroup.builder().id("12").name("adriancole").account("adrian").domainId("1").domain("ROOT").build())
+ .add(SecurityGroup.builder().id("15").name("2").description("description").account("adrian").domainId("1")
+ .domain("ROOT").build())
+
+ .add(SecurityGroup.builder().id("14").name("1").description("description").account("adrian").domainId("1")
+ .domain("ROOT").ingressRules(ImmutableSet.of(
+
+ IngressRule.builder().id("7").protocol("tcp").startPort(10).endPort(10).CIDR("1.1.1.1/24").build(),
+
+ IngressRule.builder().id("8").protocol("tcp").startPort(10).endPort(10).CIDR("2.2.2.2/16").build()))
+ .build())
+ .add(SecurityGroup
+ .builder()
+ .id("16")
+ .name("with1and2")
+ .description("description")
+ .account("adrian")
+ .domainId("1")
+ .domain("ROOT")
+ .ingressRules(
+ ImmutableSet.of(IngressRule.builder().id("9").protocol("icmp").ICMPType(-1).ICMPCode(-1)
+ .securityGroupName("1").account("adrian").build(),
+
+ IngressRule.builder().id("10").protocol("tcp").startPort(22).endPort(22).securityGroupName("1")
+ .account("adrian").build(),
+
+ IngressRule.builder().id("11").protocol("tcp").startPort(22).endPort(22).securityGroupName("2")
+ .account("adrian").build())).build()).build();
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListServiceOfferingsResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListServiceOfferingsResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListServiceOfferingsResponseTest.java
new file mode 100644
index 0000000..0318d19
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListServiceOfferingsResponseTest.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Set;
+
+import org.jclouds.cloudstack.domain.ServiceOffering;
+import org.jclouds.cloudstack.domain.StorageType;
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ListServiceOfferingsResponseTest extends BaseSetParserTest<ServiceOffering> {
+
+ @Override
+ public String resource() {
+ return "/listserviceofferingsresponse.json";
+ }
+
+ @Override
+ @SelectJson("serviceoffering")
+ public Set<ServiceOffering> expected() {
+ return ImmutableSet.<ServiceOffering> of(
+ ServiceOffering.builder().id("1").name("Small Instance")
+ .displayText("Small Instance - 500 MhZ CPU, 512 MB RAM - $0.05 per hour").cpuNumber(1).cpuSpeed(500)
+ .memory(512)
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-02-11T15:22:32-0800"))
+ .storageType(StorageType.SHARED).supportsHA(false).build(),
+ ServiceOffering.builder().id("2").name("Medium Instance")
+ .displayText("Medium Instance, 1 GhZ CPU, 1 GB RAM - $0.10 per hour").cpuNumber(1).cpuSpeed(1000)
+ .memory(1024)
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-02-11T15:22:32-0800"))
+ .storageType(StorageType.SHARED).supportsHA(false).build());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListStoragePoolsResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListStoragePoolsResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListStoragePoolsResponseTest.java
new file mode 100644
index 0000000..6993d72
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListStoragePoolsResponseTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Set;
+import java.util.TimeZone;
+
+import org.jclouds.cloudstack.config.CloudStackParserModule;
+import org.jclouds.cloudstack.domain.StoragePool;
+import org.jclouds.json.BaseItemParserTest;
+import org.jclouds.json.config.GsonModule;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+@Test(groups = "unit", testName = "ListStoragePoolsResponseTest")
+public class ListStoragePoolsResponseTest extends BaseItemParserTest<Set<StoragePool>> {
+
+ @Override
+ public String resource() {
+ return "/liststoragepoolsresponse.json";
+ }
+
+ @Override
+ @SelectJson("storagepool")
+ public Set<StoragePool> expected() {
+ Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+02:00"));
+ c.set(Calendar.YEAR, 2011);
+ c.set(Calendar.MONTH, Calendar.NOVEMBER);
+ c.set(Calendar.DAY_OF_MONTH, 26);
+ c.set(Calendar.HOUR_OF_DAY, 23);
+ c.set(Calendar.MINUTE, 33);
+ c.set(Calendar.SECOND, 6);
+ Date created = c.getTime();
+
+ StoragePool storagePool = StoragePool.builder().id("201").zoneId("1").zoneName("Dev Zone 1").podId("1")
+ .podName("Dev Pod 1").name("NFS Pri 1").ipAddress("10.26.26.165").path("/mnt/nfs/cs_pri")
+ .created(created).type(StoragePool.Type.NETWORK_FILESYSTEM).clusterId("1").clusterName("Xen Clust 1")
+ .diskSizeTotal(898356445184L).diskSizeAllocated(18276679680L).tag("tag1").state(StoragePool.State.UP)
+ .build();
+ return ImmutableSet.of(storagePool);
+ }
+
+ @Override
+ protected Injector injector() {
+ return Guice.createInjector(new GsonModule(), new CloudStackParserModule());
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListTemplatesResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListTemplatesResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListTemplatesResponseTest.java
new file mode 100644
index 0000000..bd5980e
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListTemplatesResponseTest.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Set;
+
+import org.jclouds.cloudstack.domain.Template;
+import org.jclouds.cloudstack.domain.Template.Format;
+import org.jclouds.cloudstack.domain.Template.Type;
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ListTemplatesResponseTest extends BaseSetParserTest<Template> {
+
+ @Override
+ public String resource() {
+ // grep listtemplatesresponse ./target/test-data/jclouds-wire.log|tail
+ // -1|sed -e 's/.*<< "//g' -e 's/"$//g'
+ return "/listtemplatesresponse.json";
+ }
+
+ @Override
+ @SelectJson("template")
+ public Set<Template> expected() {
+ return ImmutableSet.of(
+ Template.builder().id("2").name("CentOS 5.3(64-bit) no GUI (XenServer)")
+ .displayText("CentOS 5.3(64-bit) no GUI (XenServer)").isPublic(true)
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-03-20T19:17:48-0700"))
+ .ready(false).passwordEnabled(false).format(Format.VHD).featured(true).crossZones(true).OSTypeId("11")
+ .OSType("CentOS 5.3 (32-bit)").account("system").zoneId("2").zone("Chicago").type(Type.BUILTIN)
+ .hypervisor("XenServer").domain("ROOT").domainId("1").extractable(true).build(),
+ Template.builder().id("4").name("CentOS 5.5(64-bit) no GUI (KVM)")
+ .displayText("CentOS 5.5(64-bit) no GUI (KVM)").isPublic(true)
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-03-20T19:17:48-0700"))
+ .ready(true).passwordEnabled(false).format(Format.QCOW2).featured(true).crossZones(true)
+ .OSTypeId("112").OSType("CentOS 5.5 (64-bit)").account("system").zoneId("2").zone("Chicago")
+ .size(8589934592l).type(Type.BUILTIN).hypervisor("KVM").domain("ROOT").domainId("1").extractable(true)
+ .build(),
+ Template.builder().id("203").name("Windows 7 KVM").displayText("Windows 7 KVM").isPublic(true)
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-03-20T22:02:18-0700"))
+ .ready(true).passwordEnabled(false).format(Format.QCOW2).featured(true).crossZones(false)
+ .OSTypeId("48").OSType("Windows 7 (32-bit)").account("admin").zoneId("2").zone("Chicago")
+ .size(17179869184l).type(Type.USER).hypervisor("KVM").domain("ROOT").domainId("1").extractable(false)
+ .build(),
+ Template.builder().id("7").name("CentOS 5.3(64-bit) no GUI (vSphere)")
+ .displayText("CentOS 5.3(64-bit) no GUI (vSphere)").isPublic(true)
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-03-20T19:17:48-0700"))
+ .ready(false).passwordEnabled(false).format(Format.OVA).featured(true).crossZones(true).OSTypeId("12")
+ .OSType("CentOS 5.3 (64-bit)").account("system").zoneId("2").zone("Chicago").type(Type.BUILTIN)
+ .hypervisor("VMware").domain("ROOT").domainId("1").extractable(true).build(),
+ Template.builder().id("241").name("kvmdev4").displayText("v5.6.28_Dev4").isPublic(true)
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-04-21T09:43:25-0700"))
+ .ready(true).passwordEnabled(false).format(Format.QCOW2).featured(false).crossZones(false)
+ .OSTypeId("14").OSType("CentOS 5.4 (64-bit)").account("rs3").zoneId("2").zone("Chicago")
+ .size(10737418240l).type(Type.USER).hypervisor("KVM").domain("ROOT").domainId("1").extractable(false)
+ .build());
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListUsageRecordsResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListUsageRecordsResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListUsageRecordsResponseTest.java
new file mode 100644
index 0000000..9ecd895
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListUsageRecordsResponseTest.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Set;
+import java.util.TimeZone;
+
+import org.jclouds.cloudstack.config.CloudStackParserModule;
+import org.jclouds.cloudstack.domain.UsageRecord;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.json.config.GsonModule;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+@Test(groups = "unit")
+public class ListUsageRecordsResponseTest extends BaseSetParserTest<UsageRecord> {
+
+ @Override
+ public String resource() {
+ return "/listusagerecordsresponse.json";
+ }
+
+ @Override
+ @SelectJson("usagerecord")
+ public Set<UsageRecord> expected() {
+ Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
+ c.set(Calendar.YEAR, 2011);
+ c.set(Calendar.MONTH, Calendar.DECEMBER);
+ c.set(Calendar.DAY_OF_MONTH, 15);
+ c.set(Calendar.HOUR_OF_DAY, 0);
+ c.set(Calendar.MINUTE, 0);
+ c.set(Calendar.SECOND, 0);
+ c.set(Calendar.MILLISECOND, 0);
+ Date start = c.getTime();
+ c.add(Calendar.DAY_OF_MONTH, 1);
+ c.add(Calendar.SECOND, -1);
+ Date end = c.getTime();
+
+ return ImmutableSet.of(UsageRecord.builder()
+ .accountName("admin").accountId("2").domainId("1").zoneId("1")
+ .description("Template Id:203 Size:3117171712")
+ .usage("24 Hrs").usageType(UsageRecord.UsageType.TEMPLATE).rawUsageHours(24)
+ .templateId("0").id("203").startDate(start).endDate(end).build());
+
+ }
+
+ @Override
+ protected Injector injector() {
+ return Guice.createInjector(new GsonModule(), new CloudStackParserModule());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponse3xTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponse3xTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponse3xTest.java
new file mode 100644
index 0000000..a891f4c
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponse3xTest.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Set;
+
+import org.jclouds.cloudstack.domain.GuestIPType;
+import org.jclouds.cloudstack.domain.NIC;
+import org.jclouds.cloudstack.domain.TrafficType;
+import org.jclouds.cloudstack.domain.VirtualMachine;
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ListVirtualMachinesResponse3xTest extends BaseSetParserTest<VirtualMachine> {
+
+ @Override
+ public String resource() {
+ return "/listvirtualmachinesresponse3x.json";
+ }
+
+ @Override
+ @SelectJson("virtualmachine")
+ public Set<VirtualMachine> expected() {
+ return ImmutableSet.of(VirtualMachine
+ .builder()
+ .id("fee2ccb3-c1f2-4e7b-8465-42b390e10dff")
+ .name("cloudstack-r-611")
+ .displayName("cloudstack-r-611")
+ .account("jcloud2")
+ .domainId("ea66e3a5-d007-42e8-a0de-ec5ce778a1d7")
+ .domain("jCloud")
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2012-05-22T09:18:28-0700"))
+ .state(VirtualMachine.State.RUNNING)
+ .isHAEnabled(false)
+ .zoneId("1")
+ .zoneName("Santa Clara Zone")
+ .templateId("5c65f152-a4bc-4405-a756-fd10841a9aa7")
+ .templateName("jclouds-6d4bdc29")
+ .templateDisplayText("jclouds live testCreateTemplate")
+ .passwordEnabled(false)
+ .serviceOfferingId("5305750d-df71-4da9-8cd0-e23c2236a6e2")
+ .serviceOfferingName("Micro Instance")
+ .cpuCount(1)
+ .cpuSpeed(500)
+ .memory(256)
+ .guestOSId("6dcd58ce-1ec6-432c-af0b-9ab4ca9207d9")
+ .rootDeviceId("0")
+ .rootDeviceType("IscsiLUN")
+ .publicIP("72.52.126.110")
+ .publicIPId("e202aafb-ab41-4dc0-80e9-9fcd64fbf45c")
+ .nics(ImmutableSet.of(NIC.builder().id("48640c5e-90f3-45bd-abd2-a108ca8957ac").
+ networkId("c0d5db5b-f7d5-44e1-b854-21ecd1a09dbf").netmask("255.255.255.0").gateway("10.1.1.1")
+ .IPAddress("10.1.1.227").trafficType(TrafficType.GUEST).guestIPType(GuestIPType.ISOLATED)
+ .isDefault(true).build())).build());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponseTest.java
new file mode 100644
index 0000000..d6b737b
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVirtualMachinesResponseTest.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Set;
+
+import org.jclouds.cloudstack.domain.GuestIPType;
+import org.jclouds.cloudstack.domain.NIC;
+import org.jclouds.cloudstack.domain.TrafficType;
+import org.jclouds.cloudstack.domain.VirtualMachine;
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ListVirtualMachinesResponseTest extends BaseSetParserTest<VirtualMachine> {
+
+ @Override
+ public String resource() {
+ return "/listvirtualmachinesresponse.json";
+ }
+
+ @Override
+ @SelectJson("virtualmachine")
+ public Set<VirtualMachine> expected() {
+ return ImmutableSet.of(VirtualMachine
+ .builder()
+ .id("54")
+ .name("i-3-54-VM")
+ .displayName("i-3-54-VM")
+ .account("adrian")
+ .domainId("1")
+ .domain("ROOT")
+ .created(new SimpleDateFormatDateService().iso8601SecondsDateParse("2011-02-16T14:28:37-0800"))
+ .state(VirtualMachine.State.STARTING)
+ .isHAEnabled(false)
+ .zoneId("1")
+ .zoneName("San Jose 1")
+ .templateId("2")
+ .templateName("CentOS 5.3(64-bit) no GUI (XenServer)")
+ .templateDisplayText("CentOS 5.3(64-bit) no GUI (XenServer)")
+ .passwordEnabled(false)
+ .serviceOfferingId("1")
+ .serviceOfferingName("Small Instance")
+ .cpuCount(1)
+ .cpuSpeed(500)
+ .memory(512)
+ .guestOSId("11")
+ .rootDeviceId("0")
+ .rootDeviceType("NetworkFilesystem")
+ .jobId("63")
+ .jobStatus(0)
+ .nics(ImmutableSet.of(NIC.builder().id("72").networkId("204").netmask("255.255.255.0").gateway("10.1.1.1")
+ .IPAddress("10.1.1.18").trafficType(TrafficType.GUEST).guestIPType(GuestIPType.VIRTUAL)
+ .isDefault(true).build())).hypervisor("XenServer").build());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVlanIPRangesResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVlanIPRangesResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVlanIPRangesResponseTest.java
new file mode 100644
index 0000000..fdbaa68
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListVlanIPRangesResponseTest.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Set;
+
+import org.jclouds.cloudstack.domain.VlanIPRange;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ListVlanIPRangesResponseTest extends BaseSetParserTest<VlanIPRange> {
+
+ @Override
+ public String resource() {
+ return "/listvlaniprangesresponse.json";
+ }
+
+ @Override
+ @SelectJson("vlaniprange")
+ public Set<VlanIPRange> expected() {
+ VlanIPRange range1 = VlanIPRange.builder()
+ .id("1")
+ .forVirtualNetwork(true)
+ .zoneId("1")
+ .vlan("127")
+ .account("system")
+ .domainId("1")
+ .domain("ROOT")
+ .gateway("10.27.27.254")
+ .netmask("255.255.255.0")
+ .startIP("10.27.27.50")
+ .endIP("10.27.27.100")
+ .networkId("200")
+ .build();
+ VlanIPRange range2 = VlanIPRange.builder()
+ .id("2")
+ .forVirtualNetwork(false)
+ .zoneId("2")
+ .vlan("untagged")
+ .account("system")
+ .domainId("1")
+ .domain("ROOT")
+ .podId("2")
+ .podName("Dev Pod 2")
+ .gateway("10.22.22.254")
+ .netmask("255.255.255.0")
+ .startIP("10.22.22.51")
+ .endIP("10.22.22.100")
+ .networkId("209")
+ .build();
+ return ImmutableSet.of(range1, range2);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListZonesResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListZonesResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListZonesResponseTest.java
new file mode 100644
index 0000000..f69213d
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/ListZonesResponseTest.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import java.util.Set;
+
+import org.jclouds.cloudstack.domain.NetworkType;
+import org.jclouds.cloudstack.domain.Zone;
+import org.jclouds.json.BaseSetParserTest;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class ListZonesResponseTest extends BaseSetParserTest<Zone> {
+
+ @Override
+ public String resource() {
+ return "/listzonesresponse.json";
+ }
+
+ @Override
+ @SelectJson("zone")
+ public Set<Zone> expected() {
+ return ImmutableSet.of(Zone.builder().id("1").name("San Jose 1").networkType(NetworkType.ADVANCED)
+ .securityGroupsEnabled(false).build(),
+ Zone.builder().id("2").name("Chicago").networkType(NetworkType.ADVANCED).securityGroupsEnabled(true).build());
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/RegisterUserKeysResponseTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/RegisterUserKeysResponseTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/RegisterUserKeysResponseTest.java
new file mode 100644
index 0000000..08cd959
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/parse/RegisterUserKeysResponseTest.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.parse;
+
+import org.jclouds.cloudstack.domain.ApiKeyPair;
+import org.jclouds.json.BaseParserTest;
+import org.jclouds.rest.annotations.SelectJson;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit")
+public class RegisterUserKeysResponseTest extends BaseParserTest<ApiKeyPair, Object> {
+
+ @Override
+ public String resource() {
+ return "/registeruserkeysresponse.json";
+ }
+
+ @Override
+ @SelectJson("userkeys")
+ public ApiKeyPair expected() {
+ return ApiKeyPair.builder()
+ .apiKey("5nn6IAQ-0BYuAKTu45rf49VsyX0rg9t48TpY8NKsduE5t-_1_g_AU8ZjP3OJvVdlzWKL3Lgfa6_nkC9hU6NyQQ")
+ .secretKey("GSCDYzj65CiSkxzCJxlFvcF52qglM7HbuG6QL7zYVeWVhVO8GnW85wGTBBuZ3xpzEN_UfKnsORvrNszYQ1ofAw").build();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/JobCompleteTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/JobCompleteTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/JobCompleteTest.java
new file mode 100644
index 0000000..581e373
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/JobCompleteTest.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.predicates;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
+
+import org.jclouds.cloudstack.AsyncJobException;
+import org.jclouds.cloudstack.CloudStackApi;
+import org.jclouds.cloudstack.domain.AsyncJob;
+import org.jclouds.cloudstack.domain.AsyncJobError;
+import org.jclouds.cloudstack.domain.AsyncJob.ResultCode;
+import org.jclouds.cloudstack.domain.AsyncJob.Status;
+import org.jclouds.cloudstack.domain.AsyncJobError.ErrorCode;
+import org.jclouds.cloudstack.features.AsyncJobApi;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit", singleThreaded = true)
+public class JobCompleteTest {
+
+ CloudStackApi client;
+ AsyncJobApi asyncJobClient;
+
+ @BeforeMethod
+ public void setUp() {
+ client = createMock(CloudStackApi.class);
+ asyncJobClient = createMock(AsyncJobApi.class);
+
+ expect(client.getAsyncJobApi()).andReturn(asyncJobClient);
+ }
+
+ @Test
+ public void testJobComplete() {
+ AsyncJob<?> job = AsyncJob.builder().id("100")
+ .status(Status.SUCCEEDED).resultCode(ResultCode.SUCCESS).build();
+ expect((Object) asyncJobClient.getAsyncJob(job.getId())).andReturn(job);
+
+ replay(client, asyncJobClient);
+ assertTrue(new JobComplete(client).apply(job.getId()));
+ verify(client, asyncJobClient);
+ }
+
+ @Test
+ public void testFailedJobComplete() {
+ AsyncJob<?> job = AsyncJob.builder().id("100")
+ .status(Status.FAILED).resultCode(ResultCode.FAIL)
+ .error(AsyncJobError.builder().errorCode(ErrorCode.INTERNAL_ERROR).errorText("Dummy test error").build()).build();
+ expect((Object) asyncJobClient.getAsyncJob(job.getId())).andReturn(job);
+
+ replay(client, asyncJobClient);
+ try {
+ new JobComplete(client).apply(job.getId());
+ fail("No exception thrown");
+
+ } catch (AsyncJobException e) {
+ assertTrue(e.toString().contains("Dummy test error"));
+ }
+ verify(client, asyncJobClient);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/NetworkPredicatesTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/NetworkPredicatesTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/NetworkPredicatesTest.java
new file mode 100644
index 0000000..c7fc117
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/NetworkPredicatesTest.java
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.predicates;
+
+import static org.jclouds.cloudstack.predicates.NetworkPredicates.defaultNetworkInZone;
+import static org.jclouds.cloudstack.predicates.NetworkPredicates.hasLoadBalancerService;
+import static org.jclouds.cloudstack.predicates.NetworkPredicates.supportsPortForwarding;
+import static org.jclouds.cloudstack.predicates.NetworkPredicates.supportsStaticNAT;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.jclouds.cloudstack.domain.Network;
+import org.jclouds.cloudstack.domain.NetworkService;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+
+@Test(groups = "unit")
+public class NetworkPredicatesTest {
+
+ public void testHasLoadBalancerService() {
+ Network network = Network.builder().id("204").services(ImmutableSet.of(NetworkService.builder().name("Lb").build())).build();
+
+ assert hasLoadBalancerService().apply(network);
+ assert !supportsStaticNAT().apply(network);
+ assert !supportsPortForwarding().apply(network);
+
+ }
+
+ public void testSupportsStaticNATFindsWhenFirewallHasStaticNatFeature() {
+ Network network = Network
+ .builder()
+ .id("204")
+ .services(
+ ImmutableSet.of(NetworkService.builder().name("Firewall").capabilities(
+ ImmutableMap.<String, String> of("StaticNat", "true")).build()))
+ .build();
+
+ assert !hasLoadBalancerService().apply(network);
+ assert supportsStaticNAT().apply(network);
+ assert !supportsPortForwarding().apply(network);
+ }
+
+ public void testNoSupport() {
+ Network network = Network.builder().id("204")
+ .services(ImmutableSet.of(NetworkService.builder().name("Firewall").capabilities(
+ ImmutableMap.<String, String> of()).build())).build();
+
+ assert !hasLoadBalancerService().apply(network);
+ assert !supportsStaticNAT().apply(network);
+ assert !supportsPortForwarding().apply(network);
+ }
+
+ public void testSupportsPortForwardingFindsWhenFirewallHasPortForwardingFeature() {
+ Network network = Network
+ .builder()
+ .id("204")
+ .services(
+ ImmutableSet.of(NetworkService.builder().name("Firewall").capabilities(
+ ImmutableMap.<String, String> of("PortForwarding", "true")).build())).build();
+
+ assert !hasLoadBalancerService().apply(network);
+ assert !supportsStaticNAT().apply(network);
+ assert supportsPortForwarding().apply(network);
+ }
+
+ public void testSupportsPortForwardingAndStaticNATWhenFirewallHasFeatures() {
+ Network network = Network
+ .builder()
+ .id("204")
+ .services(
+ ImmutableSet.of(NetworkService.builder().name("Firewall").capabilities(
+ ImmutableMap.<String, String> of("StaticNat", "true", "PortForwarding", "true")).build())).build();
+
+ assert Predicates.and(supportsPortForwarding(), supportsStaticNAT()).apply(network);
+ assert !hasLoadBalancerService().apply(network);
+
+ }
+
+ public void testDefaultNetworkInZone() {
+ Network defaultInZone = Network.builder().id("42-1").isDefault(true).zoneId("42").build();
+ Network defaultNotInZone = Network.builder().id("200-1").isDefault(true).zoneId("200").build();
+ Network notDefaultInZone = Network.builder().id("42-2").isDefault(false).zoneId("42").build();
+ Network notDefaultNotInZone = Network.builder().id("200-2").isDefault(false).zoneId("200").build();
+
+ Predicate<Network> predicate = defaultNetworkInZone("42");
+ assertTrue(predicate.apply(defaultInZone));
+ assertFalse(predicate.apply(defaultNotInZone));
+ assertFalse(predicate.apply(notDefaultInZone));
+ assertFalse(predicate.apply(notDefaultNotInZone));
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/OSCategoryInTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/OSCategoryInTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/OSCategoryInTest.java
new file mode 100644
index 0000000..0722a73
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/OSCategoryInTest.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.predicates;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.jclouds.cloudstack.CloudStackApi;
+import org.jclouds.cloudstack.domain.OSType;
+import org.jclouds.cloudstack.domain.Template;
+import org.jclouds.cloudstack.features.GuestOSApi;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+
+@Test(groups = "unit", singleThreaded = true)
+public class OSCategoryInTest {
+
+ private CloudStackApi client;
+ private GuestOSApi guestOSClient;
+ private Set<String> acceptableCategories = ImmutableSet.<String>of("Ubuntu");
+
+ @BeforeMethod
+ public void setUp() {
+ client = createMock(CloudStackApi.class);
+ guestOSClient = createMock(GuestOSApi.class);
+
+ expect(client.getGuestOSApi()).andReturn(guestOSClient).times(2);
+
+ Map<String, String> osCategories = Maps.newHashMap();
+ osCategories.put("1", "Ubuntu");
+ osCategories.put("2", "CentOS");
+ osCategories.put("3", "RHEL");
+
+ expect(guestOSClient.listOSCategories()).andReturn(osCategories);
+
+ Set<OSType> osTypes = ImmutableSet.of(
+ OSType.builder().id("10").OSCategoryId("1").description("Ubuntu 10.04 LTS").build(),
+ OSType.builder().id("20").OSCategoryId("2").description("CentOS 5.4").build(),
+ OSType.builder().id("30").OSCategoryId("3").description("RHEL 6").build()
+ );
+
+ expect(guestOSClient.listOSTypes()).andReturn(osTypes);
+ replay(client, guestOSClient);
+ }
+
+ @Test
+ public void testTemplateInAcceptableCategory() {
+ assertTrue(new OSCategoryIn(client).apply(acceptableCategories).apply(
+ Template.builder().id("1").OSTypeId("10").build()
+ ));
+ verify(client, guestOSClient);
+ }
+
+ @Test
+ public void testTemplateNotInAcceptableCategory() {
+ assertFalse(new OSCategoryIn(client).apply(acceptableCategories).apply(
+ Template.builder().id("2").OSTypeId("30").build()
+ ));
+ verify(client, guestOSClient);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/PublicIPAddressPredicatesTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/PublicIPAddressPredicatesTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/PublicIPAddressPredicatesTest.java
new file mode 100644
index 0000000..8b05cf6
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/PublicIPAddressPredicatesTest.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.predicates;
+
+import static org.jclouds.cloudstack.predicates.PublicIPAddressPredicates.available;
+
+import org.jclouds.cloudstack.domain.PublicIPAddress;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit")
+public class PublicIPAddressPredicatesTest {
+
+ public void testIsAvailableWhenAllocated() {
+ PublicIPAddress address = PublicIPAddress.builder().state(PublicIPAddress.State.ALLOCATED).id("204").build();
+
+ assert available().apply(address);
+
+ }
+
+ public void testIsNotAvailableWhenNotAllocated() {
+ PublicIPAddress address = PublicIPAddress.builder().state(PublicIPAddress.State.ALLOCATING).id("204").build();
+
+ assert !available().apply(address);
+
+ }
+
+ public void testIsNotAvailableWhenAssignedToVM() {
+ PublicIPAddress address = PublicIPAddress.builder().state(PublicIPAddress.State.ALLOCATED).virtualMachineId("1")
+ .id("204").build();
+
+ assert !available().apply(address);
+
+ }
+
+ public void testIsNotAvailableWhenSourceNAT() {
+ PublicIPAddress address = PublicIPAddress.builder().state(PublicIPAddress.State.ALLOCATED).isSourceNAT(true)
+ .id("204").build();
+
+ assert !available().apply(address);
+
+ }
+
+ public void testIsNotAvailableWhenStaticNAT() {
+ PublicIPAddress address = PublicIPAddress.builder().state(PublicIPAddress.State.ALLOCATED).isStaticNAT(true)
+ .id("204").build();
+
+ assert !available().apply(address);
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/SecurityGroupPredicatesTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/SecurityGroupPredicatesTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/SecurityGroupPredicatesTest.java
new file mode 100644
index 0000000..cccb558
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/SecurityGroupPredicatesTest.java
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.predicates;
+
+import static org.jclouds.cloudstack.predicates.SecurityGroupPredicates.hasCidr;
+import static org.jclouds.cloudstack.predicates.SecurityGroupPredicates.nameEquals;
+import static org.jclouds.cloudstack.predicates.SecurityGroupPredicates.portInRange;
+import static org.jclouds.cloudstack.predicates.SecurityGroupPredicates.portInRangeForCidr;
+import static org.jclouds.cloudstack.predicates.SecurityGroupPredicates.ruleCidrMatches;
+import static org.jclouds.cloudstack.predicates.SecurityGroupPredicates.ruleGroupMatches;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.jclouds.cloudstack.domain.IngressRule;
+import org.jclouds.cloudstack.domain.SecurityGroup;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+
+@Test(groups = "unit")
+public class SecurityGroupPredicatesTest {
+
+ public SecurityGroup group() {
+ return SecurityGroup
+ .builder()
+ .id("13")
+ .name("default")
+ .description("description")
+ .account("adrian")
+ .domainId("1")
+ .domain("ROOT")
+ .ingressRules(
+ ImmutableSet.of(
+
+ IngressRule.builder().id("5").protocol("tcp").startPort(22).endPort(22)
+ .securityGroupName("adriancole").account("adrian").build(),
+ IngressRule.builder().id("6").protocol("udp").startPort(11).endPort(11).CIDR("1.1.1.1/24").build(),
+ IngressRule.builder().id("7").protocol("tcp").startPort(40).endPort(50).CIDR("1.1.1.1/24").build(),
+ IngressRule.builder().id("8").protocol("tcp").startPort(60).endPort(60).CIDR("2.2.2.2/16").build()
+ )).build();
+ }
+
+ @Test
+ public void testPortInRange() {
+ assertTrue(portInRange(22).apply(group()));
+ assertTrue(portInRange(45).apply(group()));
+ assertFalse(portInRange(100).apply(group()));
+ }
+
+ @Test
+ public void testHasCidr() {
+ assertTrue(hasCidr("1.1.1.1/24").apply(group()));
+ assertFalse(hasCidr("3.3.3.3/25").apply(group()));
+ }
+
+ @Test
+ public void testPortInRangeForCidr() {
+ assertTrue(portInRangeForCidr(11, "1.1.1.1/24").apply(group()));
+ assertTrue(portInRangeForCidr(45, "1.1.1.1/24").apply(group()));
+ assertFalse(portInRangeForCidr(45, "2.2.2.2/16").apply(group()));
+ assertFalse(portInRangeForCidr(11, "2.2.2.2/16").apply(group()));
+ assertFalse(portInRangeForCidr(11, "3.3.3.3/25").apply(group()));
+ }
+
+ @Test
+ public void testNameEquals() {
+ assertTrue(nameEquals("default").apply(group()));
+ assertFalse(nameEquals("not-default").apply(group()));
+ }
+
+ @Test
+ public void testRuleCidrMatches() {
+ assertTrue(Iterables.any(group().getIngressRules(),
+ ruleCidrMatches("tcp", 40, 50, ImmutableSet.of("1.1.1.1/24"))));
+ assertFalse(Iterables.any(group().getIngressRules(),
+ ruleCidrMatches("tcp", 40, 50, ImmutableSet.of("2.2.2.2/24"))));
+ }
+
+ @Test
+ public void testRuleGroupMatches() {
+ assertTrue(Iterables.any(group().getIngressRules(),
+ ruleGroupMatches("tcp", 22, 22,
+ ImmutableMultimap.<String, String>builder().put("adrian", "adriancole").build())));
+ assertFalse(Iterables.any(group().getIngressRules(),
+ ruleGroupMatches("tcp", 22, 22,
+ ImmutableMultimap.<String, String>builder().put("adrian", "somegroup").build())));
+ assertFalse(Iterables.any(group().getIngressRules(),
+ ruleGroupMatches("tcp", 22, 22,
+ ImmutableMultimap.<String, String>builder().put("someuser", "adriancole").build())));
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/TemplatePredicatesTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/TemplatePredicatesTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/TemplatePredicatesTest.java
new file mode 100644
index 0000000..c514af1
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/TemplatePredicatesTest.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.predicates;
+
+import static org.jclouds.cloudstack.predicates.TemplatePredicates.isPasswordEnabled;
+import static org.jclouds.cloudstack.predicates.TemplatePredicates.isReady;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.jclouds.cloudstack.domain.Template;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit")
+public class TemplatePredicatesTest {
+
+ @Test
+ public void testTemplateIsReady() {
+ assertTrue(isReady().apply(
+ Template.builder().id("a").ready(true).build()
+ ));
+ assertFalse(isReady().apply(
+ Template.builder().id("b").ready(false).build()
+ ));
+ }
+
+ @Test
+ public void testTemplateIsPasswordEnabled() {
+ assertTrue(isPasswordEnabled().apply(
+ Template.builder().id("anid").passwordEnabled(true).build()
+ ));
+ assertFalse(isPasswordEnabled().apply(
+ Template.builder().id("someid").passwordEnabled(false).build()
+ ));
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/UserPredicatesTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/UserPredicatesTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/UserPredicatesTest.java
new file mode 100644
index 0000000..ac2ecb1
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/UserPredicatesTest.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.predicates;
+
+import static org.jclouds.cloudstack.predicates.UserPredicates.apiKeyEquals;
+import static org.jclouds.cloudstack.predicates.UserPredicates.isAdminAccount;
+import static org.jclouds.cloudstack.predicates.UserPredicates.isDomainAdminAccount;
+import static org.jclouds.cloudstack.predicates.UserPredicates.isUserAccount;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.jclouds.cloudstack.domain.Account;
+import org.jclouds.cloudstack.domain.User;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit")
+public class UserPredicatesTest {
+
+ @Test
+ public void testMatchApiKey() {
+ assertTrue(apiKeyEquals("random-text").apply(
+ User.builder().id("random-id").apiKey("random-text").build()
+ ));
+ assertFalse(apiKeyEquals("something-different").apply(
+ User.builder().id("random-id").apiKey("random-text").build()
+ ));
+ }
+
+ @DataProvider(name = "accountType")
+ public Object[][] getAccountTypes() {
+ return new Object[][] {
+ /* Type ID, isUser, isDomainAdmin, isAdmin */
+ {Account.Type.USER, true, false, false},
+ {Account.Type.DOMAIN_ADMIN, false, true, false},
+ {Account.Type.ADMIN, false, false, true},
+ {Account.Type.UNRECOGNIZED, false, false, false}
+ };
+ }
+
+ @Test(dataProvider = "accountType")
+ public void testAccountType(Account.Type type, boolean isUser, boolean isDomainAdmin, boolean isAdmin) {
+ User testUser = User.builder().id("someid").accountType(type).build();
+ assertEquals(isUserAccount().apply(testUser), isUser);
+ assertEquals(isDomainAdminAccount().apply(testUser), isDomainAdmin);
+ assertEquals(isAdminAccount().apply(testUser), isAdmin);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineDestroyedTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineDestroyedTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineDestroyedTest.java
new file mode 100644
index 0000000..2c5f99b
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineDestroyedTest.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.predicates;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.jclouds.cloudstack.CloudStackApi;
+import org.jclouds.cloudstack.domain.VirtualMachine;
+import org.jclouds.cloudstack.features.VirtualMachineApi;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit", singleThreaded = true, testName = "VirtualMachineDestroyedTest")
+public class VirtualMachineDestroyedTest {
+
+ CloudStackApi client;
+ VirtualMachineApi virtualMachineClient;
+
+ @BeforeMethod
+ public void setUp() {
+ client = createMock(CloudStackApi.class);
+ virtualMachineClient = createMock(VirtualMachineApi.class);
+ expect(client.getVirtualMachineApi()).andReturn(virtualMachineClient);
+ }
+
+ @Test
+ public void testIsDestroyed() {
+ VirtualMachine virtualMachine = VirtualMachine.builder().
+ id("229").state(VirtualMachine.State.DESTROYED).build();
+
+ expect(virtualMachineClient.getVirtualMachine(virtualMachine.getId())).andReturn(virtualMachine);
+
+ replay(client, virtualMachineClient);
+ assertTrue(new VirtualMachineDestroyed(client).apply(virtualMachine));
+ verify(client, virtualMachineClient);
+ }
+
+ @Test
+ public void testStillRunning() {
+ VirtualMachine virtualMachine = VirtualMachine.builder().
+ id("229").state(VirtualMachine.State.RUNNING).build();
+
+ expect(virtualMachineClient.getVirtualMachine(virtualMachine.getId())).andReturn(virtualMachine);
+
+ replay(client, virtualMachineClient);
+ assertFalse(new VirtualMachineDestroyed(client).apply(virtualMachine));
+ verify(client, virtualMachineClient);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineExpungedTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineExpungedTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineExpungedTest.java
new file mode 100644
index 0000000..11f2790
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineExpungedTest.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.predicates;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.jclouds.cloudstack.CloudStackApi;
+import org.jclouds.cloudstack.domain.VirtualMachine;
+import org.jclouds.cloudstack.features.VirtualMachineApi;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit", singleThreaded = true, testName = "VirtualMachineExpungedTest")
+public class VirtualMachineExpungedTest {
+
+ CloudStackApi client;
+ VirtualMachineApi virtualMachineClient;
+
+ @BeforeMethod
+ public void setUp() {
+ client = createMock(CloudStackApi.class);
+ virtualMachineClient = createMock(VirtualMachineApi.class);
+ expect(client.getVirtualMachineApi()).andReturn(virtualMachineClient);
+ }
+
+ @Test
+ public void testWaitForVirtualMachineToBeExpunged() {
+ VirtualMachine virtualMachine = VirtualMachine.builder().id("229").build();
+ expect(virtualMachineClient.getVirtualMachine(virtualMachine.getId())).andReturn(null);
+
+ replay(client, virtualMachineClient);
+ assertTrue(new VirtualMachineExpunged(client).apply(virtualMachine));
+ verify(client, virtualMachineClient);
+ }
+
+ @Test
+ public void testNoRemovedYet() {
+ VirtualMachine virtualMachine = VirtualMachine.builder().id("229").build();
+ expect(virtualMachineClient.getVirtualMachine(virtualMachine.getId())).andReturn(virtualMachine);
+
+ replay(client, virtualMachineClient);
+ assertFalse(new VirtualMachineExpunged(client).apply(virtualMachine));
+ verify(client, virtualMachineClient);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineRunningTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineRunningTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineRunningTest.java
new file mode 100644
index 0000000..269fa32
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/VirtualMachineRunningTest.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.predicates;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.testng.Assert.assertEquals;
+
+import org.jclouds.cloudstack.CloudStackApi;
+import org.jclouds.cloudstack.domain.VirtualMachine;
+import org.jclouds.cloudstack.domain.VirtualMachine.State;
+import org.jclouds.cloudstack.features.VirtualMachineApi;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit", singleThreaded = true, testName = "VirtualMachineRunningTest")
+public class VirtualMachineRunningTest {
+
+ CloudStackApi client;
+ VirtualMachineApi virtualMachineClient;
+
+ @BeforeMethod
+ public void setUp() {
+ client = createMock(CloudStackApi.class);
+ virtualMachineClient = createMock(VirtualMachineApi.class);
+
+ expect(client.getVirtualMachineApi()).andReturn(virtualMachineClient);
+ }
+
+ @DataProvider(name = "virtualMachineStates")
+ public Object[][] virtualMachineStates() {
+ return new Object[][] {
+ {State.RUNNING, true},
+ {State.STARTING, false},
+ {State.STOPPING, false},
+ {State.STOPPED, false},
+ {State.SHUTDOWNED, false},
+ {State.DESTROYED, false},
+ {State.EXPUNGING, false},
+ {State.MIGRATING, false}
+ };
+ }
+
+ @Test(dataProvider = "virtualMachineStates")
+ public void testWaitForVirtualMachineToBeRunning(State state, boolean expected) {
+ assertPredicateResult(state, expected);
+ }
+
+ @Test(expectedExceptions = IllegalStateException.class)
+ public void testThrowExceptionOnErrorState() {
+ assertPredicateResult(State.ERROR, true);
+ }
+
+ private void assertPredicateResult(State state, boolean expected) {
+ String virtualMachineId = "229";
+ VirtualMachine virtualMachine = VirtualMachine.builder().
+ id(virtualMachineId).state(state).build();
+
+ expect(virtualMachineClient.getVirtualMachine(virtualMachineId)).andReturn(virtualMachine);
+ replay(client, virtualMachineClient);
+
+ assertEquals(new VirtualMachineRunning(client).apply(virtualMachine), expected);
+ verify(client, virtualMachineClient);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a4a03688/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/ZonePredicatesTest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/ZonePredicatesTest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/ZonePredicatesTest.java
new file mode 100644
index 0000000..8dfeb24
--- /dev/null
+++ b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/test/java/org/jclouds/cloudstack/predicates/ZonePredicatesTest.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.predicates;
+
+import static org.jclouds.cloudstack.predicates.ZonePredicates.supportsAdvancedNetworks;
+import static org.jclouds.cloudstack.predicates.ZonePredicates.supportsSecurityGroups;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.jclouds.cloudstack.domain.NetworkType;
+import org.jclouds.cloudstack.domain.Zone;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit")
+public class ZonePredicatesTest {
+
+ @Test
+ public void testSupportsAdvancedNetworks() {
+ assertTrue(supportsAdvancedNetworks().apply(
+ Zone.builder().id("41").networkType(NetworkType.ADVANCED).build()
+ ));
+ assertFalse(supportsAdvancedNetworks().apply(
+ Zone.builder().id("42").networkType(NetworkType.BASIC).build()
+ ));
+ }
+
+ @Test
+ public void testSupportsSecurityGroups() {
+ assertTrue(supportsSecurityGroups().apply(
+ Zone.builder().id("43").securityGroupsEnabled(true).build()
+ ));
+ assertFalse(supportsSecurityGroups().apply(
+ Zone.builder().id("44").securityGroupsEnabled(false).build()
+ ));
+ }
+
+}