MongoDB on Windows Live Test

Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/2107c471
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/2107c471
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/2107c471

Branch: refs/heads/master
Commit: 2107c4719ef7885fdafa7a1e8b78a7c1399d33af
Parents: c6b526c
Author: Yavor Yanchev <[email protected]>
Authored: Fri Oct 9 15:48:33 2015 +0300
Committer: Yavor Yanchev <[email protected]>
Committed: Fri Oct 9 15:48:33 2015 +0300

----------------------------------------------------------------------
 .../nosql/mongodb/MongoDBWinEc2LiveTest.java    | 138 +++++++++++++++++++
 1 file changed, 138 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2107c471/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBWinEc2LiveTest.java
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBWinEc2LiveTest.java
 
b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBWinEc2LiveTest.java
new file mode 100644
index 0000000..e4233ab
--- /dev/null
+++ 
b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBWinEc2LiveTest.java
@@ -0,0 +1,138 @@
+/*
+ * 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.apache.brooklyn.entity.nosql.mongodb;
+
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.location.MachineProvisioningLocation;
+import org.apache.brooklyn.core.entity.Attributes;
+import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
+import org.apache.brooklyn.core.entity.Entities;
+import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
+import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
+import org.apache.brooklyn.core.internal.BrooklynProperties;
+import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
+import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
+import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.entity.software.base.VanillaWindowsProcess;
+import 
org.apache.brooklyn.entity.software.base.test.location.WindowsTestFixture;
+import org.apache.brooklyn.location.winrm.WinRmMachineLocation;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+
+public class MongoDBWinEc2LiveTest {
+    private static final Logger LOG = 
LoggerFactory.getLogger(MongoDBWinEc2LiveTest.class);
+
+    protected ManagementContextInternal mgmt;
+    protected TestApplication app;
+    protected MachineProvisioningLocation<WinRmMachineLocation> location;
+    protected WinRmMachineLocation machine;
+
+    @BeforeClass(alwaysRun = true)
+    public void setUpClass() throws Exception {
+        mgmt = new 
LocalManagementContextForTests(BrooklynProperties.Factory.newDefault());
+
+        location = WindowsTestFixture.setUpWindowsLocation(mgmt);
+        machine = location.obtain(ImmutableMap.of());
+    }
+
+    @AfterClass(alwaysRun = true)
+    public void tearDownClass() throws Exception {
+        try {
+            try {
+                if (location != null)
+                    location.release(machine);
+            } finally {
+                if (mgmt != null)
+                    Entities.destroyAll(mgmt);
+            }
+        } catch (Throwable t) {
+            LOG.error("Caught exception in tearDownClass method", t);
+        } finally {
+            mgmt = null;
+        }
+    }
+
+    @BeforeMethod(alwaysRun = true)
+    public void setUp() throws Exception {
+        EntitySpec<TestApplication> appSpec = 
EntitySpec.create(TestApplication.class)
+                .configure(BrooklynConfigKeys.SKIP_ON_BOX_BASE_DIR_RESOLUTION, 
true);
+        app = ApplicationBuilder.newManagedApp(appSpec, mgmt);
+    }
+
+    @AfterMethod(alwaysRun = true)
+    public void tearDown() throws Exception {
+        try {
+            try {
+                if (app != null)
+                    Entities.destroy(app);
+            } catch (Throwable t) {
+                LOG.error("Caught exception in tearDown method", t);
+            }
+        } finally {
+            app = null;
+        }
+    }
+
+    @Test(groups = "Live")
+    public void doTest() {
+
+        ImmutableMap<String, String> installTemplates = new 
ImmutableMap.Builder<String, String>()
+                
.put("classpath://org/apache/brooklyn/entity/nosql/mongodb/win/install_mongodb.ps1",
 "C:\\install_mongodb.ps1")
+                
.put("classpath://org/apache/brooklyn/entity/nosql/mongodb/win/configure_mongodb.ps1",
 "C:\\configure_mongodb.ps1")
+                
.put("classpath://org/apache/brooklyn/entity/nosql/mongodb/win/launch_mongodb.ps1",
 "C:\\launch_mongodb.ps1")
+                
.put("classpath://org/apache/brooklyn/entity/nosql/mongodb/win/stop_mongodb.ps1",
 "C:\\stop_mongodb.ps1")
+                
.put("classpath://org/apache/brooklyn/entity/nosql/mongodb/win/checkrunning_mongodb.ps1",
 "C:\\checkrunning_mongodb.ps1")
+                .build();
+
+        VanillaWindowsProcess entity = 
app.createAndManageChild(EntitySpec.create(VanillaWindowsProcess.class)
+                .configure(VanillaWindowsProcess.INSTALL_TEMPLATES, 
installTemplates)
+                .configure(VanillaWindowsProcess.INSTALL_POWERSHELL_COMMAND, 
"C:\\install_mongodb.ps1")
+                .configure(VanillaWindowsProcess.CUSTOMIZE_POWERSHELL_COMMAND, 
"C:\\configure_mongodb.ps1")
+                .configure(VanillaWindowsProcess.LAUNCH_POWERSHELL_COMMAND, 
"C:\\launch_mongodb.ps1")
+                
.configure(VanillaWindowsProcess.CHECK_RUNNING_POWERSHELL_COMMAND, 
"C:\\checkrunning_mongodb.ps1")
+                .configure(VanillaWindowsProcess.STOP_POWERSHELL_COMMAND, 
"C:\\stop_mongodb.ps1")
+                .configure(VanillaWindowsProcess.PROVISIONING_PROPERTIES, 
ImmutableMap.<String, Object> of("required.ports", "27017"))
+                .configure("mongodb.download.url", 
"https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.0.6-signed.msi";)
+                .configure("mongodb.instance.name", "Instance1"));
+
+        app.start(ImmutableList.of(machine));
+        LOG.info("app started; asserting up");
+        EntityTestUtils.assertAttributeEqualsEventually(entity, 
Attributes.SERVICE_UP, true);
+        EntityTestUtils.assertAttributeEqualsEventually(entity, 
Attributes.SERVICE_STATE_ACTUAL, Lifecycle.RUNNING);
+
+        entity.stop();
+        LOG.info("stopping entity");
+        EntityTestUtils.assertAttributeEqualsEventually(entity, 
Attributes.SERVICE_STATE_ACTUAL, Lifecycle.STOPPED);
+        EntityTestUtils.assertAttributeEqualsEventually(entity, 
Attributes.SERVICE_UP, false);
+    }
+
+    @Test(enabled = false)
+    public void testDummy() {
+    } // Convince TestNG IDE integration that this really does have test 
methods
+
+}

Reply via email to