/* * Copyright 2013 Cloud4SOA, www.cloud4soa.eu * * Licensed 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. */ /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package cloudadapter; import eu.cloud4soa.api.util.exception.adapter.Cloud4SoaException; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import org.cloudfoundry.client.lib.CloudFoundryClient; import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Ignore; import org.springframework.util.Assert; /** * * @author Oriol Collell */ public class CloudFoundryAdapterTest { public static String APP_NAME = "cftester-app"; public static String USER = "me@test.com"; public static String PASS = "secret"; public CloudFoundryAdapterTest() { } /* @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { System.out.println("* UtilsJUnit4Test: @Before method"); } */ @After public void tearDown() { try { Adapter.deleteApplication("CloudFoundry", "",USER, PASS, "", APP_NAME, null,null,null,null,null,null); } catch (Exception e) { //ignore } } @Ignore @Test public void testAuthentication() throws Exception { System.out.println("Testing Authentication"); System.out.println("--------------------------------------"); System.out.println("Authenticate with correct credentials"); AuxAdapter.init(USER, PASS); System.out.println("Authenticate with bad credentials"); try { AuxAdapter.init("fakeuser", "fakepass"); fail("No exception!"); } catch (Exception e) { assertTrue(e.getMessage().contains("error")); } } @Ignore @Test public void testCreateApplication() throws Exception { System.out.println("Testing Create Application"); System.out.println("--------------------------------------"); System.out.println("Create app with correct name"); Adapter.createApplication("CloudFoundry", USER, PASS, "", APP_NAME, null); Assert.notNull(AuxAdapter.getApplicationCF(USER, PASS, APP_NAME)); System.out.println("Create an app with no name"); try { Adapter.createApplication("CloudFoundry", USER, PASS, "", "", null); fail("No exception!"); } catch (Exception e) { assertTrue(e.getMessage().contains("empty")); } } @Ignore @Test public void testDeleteApplication() throws Exception { System.out.println("Testing Delete Application"); System.out.println("--------------------------------------"); System.out.println("Delete existing application"); Adapter.createApplication("CloudFoundry", USER, PASS, "", APP_NAME, null); Assert.notNull(AuxAdapter.getApplicationCF(USER, PASS, APP_NAME)); Adapter.deleteApplication("CloudFoundry", "",USER, PASS, "", APP_NAME, null,null,null,null,null,null); try { AuxAdapter.getApplicationCF(USER, PASS, APP_NAME); fail("No Exception!"); } catch (Cloud4SoaException e) { assertTrue(e.getMessage().contains("cannot be found")); } System.out.println("Delete non-existent application"); Adapter.deleteApplication("CloudFoundry", "",USER, PASS, "", "fakename", null,null,null,null,null,null); System.out.println("Bad name parameter"); Adapter.deleteApplication("CloudFoundry", "",USER, PASS, "", "", null,null,null,null,null,null); } @Ignore @Test public void testDeploy() throws Exception { System.out.println("Testing Deployment"); System.out.println("--------------------------------------"); System.out.println("Create and deploy an app"); Adapter.createApplication("CloudFoundry", USER, PASS, "", APP_NAME, null); String uri = Adapter.deploy("CloudFoundry", "more/SampleApp1.war",USER, PASS, "", APP_NAME, null,null,null,null,null,null,null); Thread.sleep(10000); URL app = new URL("http://"+uri); URLConnection appc = app.openConnection(); BufferedReader in = new BufferedReader( new InputStreamReader( appc.getInputStream())); String inputLine = in.readLine(); assertTrue(inputLine.contains("html")); in.close(); System.out.println("Deploy non-existent application"); try { Adapter.deploy("CloudFoundry", "more/SampleApp1.war",USER, PASS, "", "fakename", null,null,null,null,null,null,null); fail("No Exception!"); } catch (Cloud4SoaException e) { assertTrue(e.getMessage().contains("cannot be found")); } System.out.println("Bad name parameter"); try { Adapter.deploy("CloudFoundry", "more/SampleApp1.war",USER, PASS, "", "", null,null,null,null,null,null,null); fail("No Exception!"); } catch (Exception e) { } System.out.println("Deploy non-existent binary"); try { Adapter.deploy("CloudFoundry", "more/fake.war",USER, PASS, "", "", null,null,null,null,null,null,null); fail("No Exception!"); } catch (Exception e) { } } @Ignore @Test public void testAppStatus() throws Exception { System.out.println("Testing App Status"); System.out.println("--------------------------------------"); System.out.println("Create and get status"); Adapter.createApplication("CloudFoundry", USER, PASS, "", APP_NAME, null); assertEquals(Adapter.getAppStatus("CloudFoundry",USER, PASS, "", APP_NAME, null,null,null),"created"); System.out.println("deploy and get status"); Adapter.deploy("CloudFoundry", "more/SampleApp1.war",USER, PASS, "", APP_NAME, null,null,null,null,null,null,null); assertEquals(Adapter.getAppStatus("CloudFoundry",USER, PASS, "", APP_NAME, null,null,null),"deployed"); System.out.println("Get status from non-existent application"); try { Adapter.getAppStatus("CloudFoundry",USER, PASS, "", "fakename", null,null,null); fail("No Exception!"); } catch (Cloud4SoaException e) { assertTrue(e.getMessage().contains("cannot be found")); } System.out.println("Bad name parameter"); try { Adapter.getAppStatus("CloudFoundry",USER, PASS, "", "", null,null,null); fail("No Exception!"); } catch (Exception e) { } } @Ignore @Test public void testRunningStatus() throws Exception { CloudFoundryClient client = AuxAdapter.init(USER, PASS); System.out.println("Testing Running Status"); System.out.println("--------------------------------------"); System.out.println("Create and get status"); Adapter.createApplication("CloudFoundry", USER, PASS, "", APP_NAME, null); assertEquals(Adapter.getRunningStatus("CloudFoundry",USER, PASS, "", APP_NAME, null,null,null),"stopped"); System.out.println("deploy and get status"); Adapter.deploy("CloudFoundry", "more/SampleApp1.war",USER, PASS, "", APP_NAME, null,null,null,null,null,null,null); assertEquals(Adapter.getRunningStatus("CloudFoundry",USER, PASS, "", APP_NAME, null,null,null),"running"); System.out.println("stop and get status"); client.stopApplication(APP_NAME); assertEquals(Adapter.getRunningStatus("CloudFoundry",USER, PASS, "", APP_NAME, null,null,null),"stopped"); System.out.println("Get status from non-existent application"); try { Adapter.getRunningStatus("CloudFoundry",USER, PASS, "", "fakename", null,null,null); fail("No Exception!"); } catch (Cloud4SoaException e) { assertTrue(e.getMessage().contains("cannot be found")); } System.out.println("Bad name parameter"); try { Adapter.getRunningStatus("CloudFoundry",USER, PASS, "", "", null,null,null); fail("No Exception!"); } catch (Exception e) { } } @Ignore @Test public void testCheckAppAvailability() throws Exception { System.out.println("Testing App Availabiltiy"); System.out.println("--------------------------------------"); System.out.println("Create and check availability"); Adapter.createApplication("CloudFoundry", USER, PASS, "", APP_NAME, null); assertFalse(Adapter.checkAppAvailability("CloudFoundry",USER, PASS, "", APP_NAME, null,null,null)); System.out.println("check availability of non-existent app"); assertTrue(Adapter.checkAppAvailability("CloudFoundry",USER, PASS, "", "fakename", null,null,null)); } @Ignore @Test public void testDownloadDB() throws Exception { /* Precondition: There is a MySQL service called test-db with a table called persons */ System.out.println("Testing DownloadDB"); System.out.println("--------------------------------------"); System.out.println("Download database"); Adapter.downloadDBCF("me@test.com", "secret", "mysql", "test-db", "dbdump.sql"); assertTrue(CloudFoundryAdapterTest.fileContainsString(new File("dbdump.sql"), "persons")); System.out.println("Download non-existent database"); try { Adapter.downloadDBCF("me@test.com", "secret", "mysql", "fake-db", "dbdump.sql"); fail("No Exception!"); } catch (Cloud4SoaException e) { assertTrue(e.getMessage().contains("cannot be found")); } System.out.println("Bad name parameter"); try { Adapter.downloadDBCF("me@test.com", "secret", "mysql", "", "dbdump.sql"); fail("No Exception!"); } catch (Cloud4SoaException e) { assertTrue(e.getMessage().contains("cannot be empty")); } } @Ignore @Test public void testRestoreDB() throws Exception { /* Precondition: There is a MySQL service called test-db */ System.out.println("Testing RestoreDB"); System.out.println("--------------------------------------"); System.out.println("Restore database"); Adapter.restoreDBCF("me@test.com", "secret", "mysql", "test-db", "dbdump.sql"); System.out.println("Restore non-existent database"); try { Adapter.restoreDBCF("me@test.com", "secret", "mysql", "fake-db", "dbdump.sql"); fail("No Exception!"); } catch (Cloud4SoaException e) { assertTrue(e.getMessage().contains("cannot be found")); } System.out.println("Bad name parameter"); try { Adapter.restoreDBCF("me@test.com", "secret", "mysql", "", "dbdump.sql"); fail("No Exception!"); } catch (Cloud4SoaException e) { assertTrue(e.getMessage().contains("cannot be empty")); } } public static boolean fileContainsString(File file, String aString) throws FileNotFoundException { FileInputStream fis = null; BufferedReader in = null; try{ fis = new FileInputStream(file); in = new BufferedReader(new InputStreamReader(fis)); String currentLine = ""; while ((currentLine = in.readLine()) != null) { if(currentLine.indexOf(aString) > 0) return true; } }catch(IOException ioe){ ioe.printStackTrace(); }finally{ try{ if(in != null) in.close(); if(fis != null) fis.close(); }catch(IOException ioe){ } } return false; } }