From 3df3f6f0965615e15a4e6a608e990d7e79839b62 Mon Sep 17 00:00:00 2001 From: "p.privalov" Date: Fri, 22 Jul 2016 12:22:23 +0300 Subject: [PATCH] SRADA-884 Check for application existance added to startTracing(). Changes: * New method CliInternals.isApplicationInstalled(..). * added check to ProcessManager.startTracing(..) for application existance. * added test for uninstalled application to TracingProcessManagerTest. setup for other tests updated to pass check in ProcessManager.startTracing(..). Change-Id: I70eb82129054c080c9b02e2cda2b7b0ac2d4a18f --- .../tizen/dynamicanalyzer/cli/CliInternals.java | 24 +++++++++++++++++ .../cli/manager/ProcessManager.java | 10 +++++-- .../cli/manager/ProcessManagerTest.java | 31 +++++++++++++++++++++- 3 files changed, 62 insertions(+), 3 deletions(-) diff --git a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/CliInternals.java b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/CliInternals.java index 9966899..286f98d 100644 --- a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/CliInternals.java +++ b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/CliInternals.java @@ -26,6 +26,7 @@ import org.tizen.dynamicanalyzer.communicator.DeviceInfo; import org.tizen.dynamicanalyzer.communicator.DeviceManager; import org.tizen.dynamicanalyzer.handlers.CommandAction; import org.tizen.dynamicanalyzer.handlers.UIActionHolder; +import org.tizen.dynamicanalyzer.project.AppInfo; import org.tizen.dynamicanalyzer.project.PackageInfo; import org.tizen.dynamicanalyzer.setting.PrimitiveFeature; import org.tizen.dynamicanalyzer.setting.SettingDataManager; @@ -431,4 +432,27 @@ public final class CliInternals { return CommandAction.saveToZip(filename); } + + /** + * Checks if application installed on device. + * + * @param application The application identifier. + * @param device The device identifier or serial. + * @return true if application installed and false + * otherwise. + */ + public static boolean isApllicationInstalled(String application, String device) { + IDevice dev = isIp(device) + ? getDeviceByIp(device) + : getDeviceBySerial(device); + Map packages = getPackageList(dev); + if (packages == null) + return false; + for (Map.Entry entry : packages.entrySet()) + // Applications in package + for (AppInfo info : entry.getValue().getAppInfos()) + if (info.getLabel().equals(application)) + return true; + return false; + } } diff --git a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManager.java b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManager.java index 9bc9f3b..f428a48 100644 --- a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManager.java +++ b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManager.java @@ -77,8 +77,14 @@ public class ProcessManager implements ProcessManagerMBean { if (!CliInternals.isDeviceExist(device)) { Logger.error("Device '%s' does not exist.", device); - return new DAResult(ErrorCode.ERR_NO_DEVICE, "Device " + device - + " does not exist."); + return new DAResult(ErrorCode.ERR_NO_DEVICE, "Device '" + device + + "' does not exist."); + } + + if (!CliInternals.isApllicationInstalled(args.getApplication(), device)) { + Logger.error("Application '%s' is not installed.", args.getApplication()); + return new DAResult(ErrorCode.ERR_NO_APP, "Application '" + + args.getApplication() + "' is not installed."); } if (!isDeviceReady(device)) { diff --git a/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManagerTest.java b/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManagerTest.java index 2dff96f..ccdd564 100644 --- a/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManagerTest.java +++ b/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/manager/ProcessManagerTest.java @@ -46,7 +46,7 @@ import org.tizen.sdblib.IDevice; @SuppressStaticInitializationFor("org.tizen.dynamicanalyzer.cli.CliInternals") public class ProcessManagerTest { - private TracingArguments args1, args2, args3; + private TracingArguments args1, args2, args3, args4; private ProcessManager pm; @@ -87,6 +87,12 @@ public class ProcessManagerTest { addFeature(PrimitiveFeature.CPU_USAGE). setDuration(0); + args4 = new TracingArguments(). + setDevice("DEV_4"). + setApplication("APP_4"). + addFeature(PrimitiveFeature.CPU_USAGE). + setDuration(0); + ctx1 = new TracingProcessContext(args1); ctx2 = new TracingProcessContext(args2); @@ -123,6 +129,17 @@ public class ProcessManagerTest { PowerMockito.when(CliInternals.isDeviceExist(args3.getDevice())) .thenReturn(false); + PowerMockito.when(CliInternals.isDeviceExist(args4.getDevice())) + .thenReturn(true); + + PowerMockito.when(CliInternals.isApllicationInstalled(args2.getApplication(), args2.getDevice())) + .thenReturn(true); + + PowerMockito.when(CliInternals.isApllicationInstalled(args1.getApplication(), args1.getDevice())) + .thenReturn(true); + + PowerMockito.when(CliInternals.isApllicationInstalled(args4.getApplication(), args4.getDevice())) + .thenReturn(false); } /** @@ -169,6 +186,18 @@ public class ProcessManagerTest { } /** + * Check manager doesn't start tracing process if application does not exist. + */ + @Test + public void startTracing_applicationNotInstalled() throws Exception { + setupManagers(); + DAResult result = pm.startTracing(args4); + + assertEquals(ErrorCode.ERR_NO_APP.getErrorNumber(), + result.getErrorNumber()); + } + + /** * Check manager correctly responds with list of currently traced devices. * Test one device present. */ -- 2.7.4