| /** |
| * Copyright (C) 2015 DataTorrent, Inc. |
| * |
| * 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. |
| */ |
| package com.datatorrent.stram.client; |
| |
| import com.datatorrent.stram.support.StramTestSupport; |
| import com.datatorrent.stram.util.JSONSerializationProvider; |
| import net.lingala.zip4j.exception.ZipException; |
| import org.apache.commons.io.IOUtils; |
| import org.codehaus.jettison.json.JSONException; |
| import org.codehaus.jettison.json.JSONObject; |
| import org.junit.Assert; |
| import org.junit.Test; |
| |
| import java.io.File; |
| import java.io.IOException; |
| import java.util.List; |
| import java.util.Set; |
| import org.junit.AfterClass; |
| import org.junit.BeforeClass; |
| |
| /** |
| * |
| */ |
| public class AppPackageTest |
| { |
| private static AppPackage ap; |
| private static JSONSerializationProvider jomp; |
| private static JSONObject json; |
| |
| String appPackageDir = "src/test/resources/testAppPackage/mydtapp"; |
| |
| @BeforeClass |
| public static void starting() |
| { |
| try { |
| File file = StramTestSupport.createAppPackageFile(); |
| // Set up test instance |
| ap = new AppPackage(file, true); |
| jomp = new JSONSerializationProvider(); |
| json = new JSONObject(jomp.getContext(null).writeValueAsString(ap)); |
| |
| } catch (ZipException e) { |
| throw new RuntimeException(e); |
| } catch (IOException e) { |
| throw new RuntimeException(e); |
| } catch (JSONException e) { |
| throw new RuntimeException(e); |
| } |
| } |
| |
| @AfterClass |
| public static void finished() |
| { |
| StramTestSupport.removeAppPackageFile(); |
| } |
| |
| @Test |
| public void testAppPackage() throws Exception |
| { |
| Assert.assertEquals("mydtapp", json.getString("appPackageName")); |
| Assert.assertEquals("1.0-SNAPSHOT", json.getString("appPackageVersion")); |
| Assert.assertEquals("3.0.0-SNAPSHOT", json.getString("dtEngineVersion")); |
| Assert.assertEquals("lib/*.jar", json.getJSONArray("classPath").getString(0)); |
| |
| JSONObject application = json.getJSONArray("applications").getJSONObject(0); |
| Assert.assertEquals("MyFirstApplication", application.getString("name")); |
| Assert.assertEquals("mydtapp-1.0-SNAPSHOT.jar", application.getString("file")); |
| |
| JSONObject dag = application.getJSONObject("dag"); |
| Assert.assertTrue("There is at least one stream", dag.getJSONArray("streams").length() >= 1); |
| Assert.assertEquals("There are two operator", 2, dag.getJSONArray("operators").length()); |
| } |
| |
| @Test |
| public void testRequiredProperties() |
| { |
| Set<String> requiredProperties = ap.getRequiredProperties(); |
| Assert.assertEquals(2, requiredProperties.size()); |
| String[] rp = requiredProperties.toArray(new String[]{}); |
| Assert.assertEquals("dt.test.required.1", rp[0]); |
| Assert.assertEquals("dt.test.required.2", rp[1]); |
| } |
| |
| @Test |
| public void testAppLevelRequiredProperties() |
| { |
| List<AppPackage.AppInfo> applications = ap.getApplications(); |
| for (AppPackage.AppInfo app : applications) { |
| if (app.name.equals("MyFirstApplication")) { |
| String[] rp = app.requiredProperties.toArray(new String[]{}); |
| Assert.assertEquals("dt.test.required.2", rp[0]); |
| Assert.assertEquals("dt.test.required.3", rp[1]); |
| Assert.assertEquals("app-default-for-required-1", app.defaultProperties.get("dt.test.required.1")); |
| return; |
| } |
| } |
| Assert.fail("Should consist of an app called MyFirstApplication"); |
| } |
| } |