From 76159eb0ea6bc5a4b343b2df10dcc8e30649db93 Mon Sep 17 00:00:00 2001 From: jayandran Date: Mon, 1 Jul 2019 21:30:55 +0530 Subject: [PATCH 1/5] Code changes for getting all session details --- .../appium/java_client/HasSessionDetails.java | 17 + .../io/appium/java_client/MobileCommand.java | 4 + .../android/AndroidDriverTest.java | 547 +++++++++--------- 3 files changed, 297 insertions(+), 271 deletions(-) diff --git a/src/main/java/io/appium/java_client/HasSessionDetails.java b/src/main/java/io/appium/java_client/HasSessionDetails.java index b743363e5..6611cbef8 100644 --- a/src/main/java/io/appium/java_client/HasSessionDetails.java +++ b/src/main/java/io/appium/java_client/HasSessionDetails.java @@ -17,15 +17,20 @@ package io.appium.java_client; import static io.appium.java_client.MobileCommand.GET_SESSION; +import static io.appium.java_client.MobileCommand.GET_ALLSESSION; import static java.util.Optional.ofNullable; import static java.util.stream.Collectors.toMap; import static org.apache.commons.lang3.StringUtils.isBlank; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import org.openqa.selenium.remote.Response; +import java.util.Arrays; +import java.util.List; import java.util.Map; + import javax.annotation.Nullable; public interface HasSessionDetails extends ExecutesMethod { @@ -86,4 +91,16 @@ default boolean isBrowser() { return ofNullable(getSessionDetail("browserName")) .orElse(null) != null; } + + /** + * Get All Sessions details + * @return List of Map objects with All Session Details + */ + @SuppressWarnings("unchecked") + default List> getAllSessionDetails() { + Response response = execute(GET_ALLSESSION); + List> resultSet = List.class.cast(response.getValue()); + return ImmutableList.>builder().addAll(resultSet).build(); + } + } diff --git a/src/main/java/io/appium/java_client/MobileCommand.java b/src/main/java/io/appium/java_client/MobileCommand.java index 4d2e3bffe..87016dc57 100644 --- a/src/main/java/io/appium/java_client/MobileCommand.java +++ b/src/main/java/io/appium/java_client/MobileCommand.java @@ -111,6 +111,7 @@ public class MobileCommand { protected static final String TOGGLE_DATA; protected static final String COMPARE_IMAGES; protected static final String EXECUTE_DRIVER_SCRIPT; + protected static final String GET_ALLSESSION; public static final Map commandRepository; @@ -186,6 +187,7 @@ public class MobileCommand { TOGGLE_DATA = "toggleData"; COMPARE_IMAGES = "compareImages"; EXECUTE_DRIVER_SCRIPT = "executeDriverScript"; + GET_ALLSESSION = "getAllSessions"; commandRepository = new HashMap<>(); commandRepository.put(RESET, postC("/session/:sessionId/appium/app/reset")); @@ -271,6 +273,8 @@ public class MobileCommand { commandRepository.put(TOGGLE_DATA, postC("/session/:sessionId/appium/device/toggle_data")); commandRepository.put(COMPARE_IMAGES, postC("/session/:sessionId/appium/compare_images")); commandRepository.put(EXECUTE_DRIVER_SCRIPT, postC("/session/:sessionId/appium/execute_driver")); + //Get All Session Details + commandRepository.put(GET_ALLSESSION, getC("/sessions")); } /** diff --git a/src/test/java/io/appium/java_client/android/AndroidDriverTest.java b/src/test/java/io/appium/java_client/android/AndroidDriverTest.java index 65d086ad5..d7a8a049c 100644 --- a/src/test/java/io/appium/java_client/android/AndroidDriverTest.java +++ b/src/test/java/io/appium/java_client/android/AndroidDriverTest.java @@ -43,276 +43,281 @@ public class AndroidDriverTest extends BaseAndroidTest { - @Test - public void sendSMSTest() { - try { - driver.sendSMS("11111111", "call"); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - - @Test - public void getStatusTest() { - assertThat(driver.getStatus().get("build").toString(), Matchers.containsString(".")); - } - - @Test - public void gsmCallTest() { - try { - driver.makeGsmCall("11111111", GsmCallActions.CALL); - driver.makeGsmCall("11111111", GsmCallActions.ACCEPT); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - @Test - public void toggleWiFi() { - try { - driver.toggleWifi(); - } catch (Exception e) { - fail("Not able to toggle wifi"); - } - } - - @Test - public void toggleAirplane() { - try { - driver.toggleAirplaneMode(); - } catch (Exception e) { - fail("Not able to toggle airplane mode"); - } - } - - @Test - public void toggleData() { - try { - driver.toggleData(); - } catch (Exception e) { - fail("Not able to toggle data"); - } - } - - @Test - public void gsmSignalStrengthTest() { - try { - driver.setGsmSignalStrength(GsmSignalStrength.GREAT); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - @Test - public void gsmVoiceTest() { - try { - driver.setGsmVoice(GsmVoiceState.OFF); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - @Test - public void networkSpeedTest() { - try { - driver.setNetworkSpeed(NetworkSpeed.EDGE); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - @Test - public void powerTest() { - try { - driver.setPowerCapacity(100); - driver.setPowerAC(PowerACState.OFF); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - @Test - public void getDeviceTimeTest() { - String time = driver.getDeviceTime(); - assertFalse(time.isEmpty()); - } - - @Test - public void isAppInstalledTest() { - assertTrue(driver.isAppInstalled(APP_ID)); - } - - @Test - public void isAppNotInstalledTest() { - assertFalse(driver.isAppInstalled("foo")); - } - - @Test - public void closeAppTest() { - driver.closeApp(); - driver.launchApp(); - assertEquals(".ApiDemos", driver.currentActivity()); - } - - @Test - public void pushFileTest() { - byte[] data = Base64.encodeBase64( - "The eventual code is no more than the deposit of your understanding. ~E. W. Dijkstra" - .getBytes()); - driver.pushFile("/data/local/tmp/remote.txt", data); - byte[] returnData = driver.pullFile("/data/local/tmp/remote.txt"); - String returnDataDecoded = new String(returnData); - assertEquals( - "The eventual code is no more than the deposit of your understanding. ~E. W. Dijkstra", - returnDataDecoded); - } - - @Test - public void pushTempFileTest() throws Exception { - File temp = File.createTempFile("Temp_", "_test"); - try { - FileUtils.writeStringToFile(temp, "The eventual code is no " - + "more than the deposit of your understanding. ~E. W. Dijkstra", "UTF-8", true); - driver.pushFile("/data/local/tmp/remote2.txt", temp); - byte[] returnData = driver.pullFile("/data/local/tmp/remote2.txt"); - String returnDataDecoded = new String(returnData); - assertEquals( - "The eventual code is no more than the deposit of " - + "your understanding. ~E. W. Dijkstra", - returnDataDecoded); - } finally { - FileUtils.forceDelete(temp); - } - } - - @Test - public void toggleLocationServicesTest() { - driver.toggleLocationServices(); - } - - @Test - public void geolocationTest() { - Location location = new Location(45, 45, 100); - driver.setLocation(location); - } - - @Test - public void orientationTest() { - assertEquals(ScreenOrientation.PORTRAIT, driver.getOrientation()); - driver.rotate(ScreenOrientation.LANDSCAPE); - assertEquals(ScreenOrientation.LANDSCAPE, driver.getOrientation()); - driver.rotate(ScreenOrientation.PORTRAIT); - } - - @Test - public void lockTest() { - try { - driver.lockDevice(); - assertTrue(driver.isDeviceLocked()); - } finally { - driver.unlockDevice(); - assertFalse(driver.isDeviceLocked()); - } - } - - @Test - public void runAppInBackgroundTest() { - long time = System.currentTimeMillis(); - driver.runAppInBackground(Duration.ofSeconds(4)); - long timeAfter = System.currentTimeMillis(); - assert (timeAfter - time > 3000); - } - - @Test - public void testApplicationsManagement() throws InterruptedException { - String appId = driver.getCurrentPackage(); - assertThat(driver.queryAppState(appId), equalTo(ApplicationState.RUNNING_IN_FOREGROUND)); - Thread.sleep(500); - driver.runAppInBackground(Duration.ofSeconds(-1)); - assertThat(driver.queryAppState(appId), lessThan(ApplicationState.RUNNING_IN_FOREGROUND)); - Thread.sleep(500); - driver.activateApp(appId); - assertThat(driver.queryAppState(appId), equalTo(ApplicationState.RUNNING_IN_FOREGROUND)); - } - - @Test - public void pullFileTest() { - byte[] data = - driver.pullFile("/data/system/users/userlist.xml"); - assert (data.length > 0); - } - - @Test - public void resetTest() { - driver.resetApp(); - } - - @Test - public void endTestCoverage() { - driver.endTestCoverage("android.intent.action.MAIN", ""); - } - - @Test - public void getDeviceUDIDTest() { - String deviceSerial = driver.getSessionDetail("deviceUDID").toString(); - assertNotNull(deviceSerial); - } - - @Test - public void getSessionMapData() { - Map map = (Map) driver.getSessionDetail("desired"); - assertNotEquals(map.size(), 0); - } - - @Test - public void deviceDetailsAndKeyboardTest() { - assertFalse(driver.isKeyboardShown()); - assertNotNull(driver.getDisplayDensity()); - assertNotEquals(0, driver.getSystemBars().size()); - } - - @Test - public void getSupportedPerformanceDataTypesTest() { - driver.startActivity(new Activity(APP_ID, ".ApiDemos")); - - List dataTypes = new ArrayList<>(); - dataTypes.add("cpuinfo"); - dataTypes.add("memoryinfo"); - dataTypes.add("batteryinfo"); - dataTypes.add("networkinfo"); - - List supportedPerformanceDataTypes = driver.getSupportedPerformanceDataTypes(); - - assertEquals(4, supportedPerformanceDataTypes.size()); - - for (int i = 0; i < supportedPerformanceDataTypes.size(); ++i) { - assertEquals(dataTypes.get(i), supportedPerformanceDataTypes.get(i)); - } - - - } - - @Test - public void getPerformanceDataTest() { - driver.startActivity(new Activity(APP_ID, ".ApiDemos")); - - List supportedPerformanceDataTypes = driver.getSupportedPerformanceDataTypes(); - - for (String dataType : supportedPerformanceDataTypes) { - - List> valueTable = driver.getPerformanceData(APP_ID, dataType, 60000); - - for (int j = 1; j < valueTable.size(); ++j) { - assertEquals(valueTable.subList(0, 0).size(), valueTable.subList(j, j).size()); - } - } - - } - - @Test - public void getCurrentPackageTest() { - assertEquals(APP_ID, driver.getCurrentPackage()); - } + @Test + public void sendSMSTest() { + try { + driver.sendSMS("11111111", "call"); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + + @Test + public void getStatusTest() { + assertThat(driver.getStatus().get("build").toString(), Matchers.containsString(".")); + } + + @Test + public void gsmCallTest() { + try { + driver.makeGsmCall("11111111", GsmCallActions.CALL); + driver.makeGsmCall("11111111", GsmCallActions.ACCEPT); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + @Test + public void toggleWiFi() { + try { + driver.toggleWifi(); + } catch (Exception e) { + fail("Not able to toggle wifi"); + } + } + + @Test + public void toggleAirplane() { + try { + driver.toggleAirplaneMode(); + } catch (Exception e) { + fail("Not able to toggle airplane mode"); + } + } + + @Test + public void toggleData() { + try { + driver.toggleData(); + } catch (Exception e) { + fail("Not able to toggle data"); + } + } + + @Test + public void gsmSignalStrengthTest() { + try { + driver.setGsmSignalStrength(GsmSignalStrength.GREAT); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + @Test + public void gsmVoiceTest() { + try { + driver.setGsmVoice(GsmVoiceState.OFF); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + @Test + public void networkSpeedTest() { + try { + driver.setNetworkSpeed(NetworkSpeed.EDGE); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + @Test + public void powerTest() { + try { + driver.setPowerCapacity(100); + driver.setPowerAC(PowerACState.OFF); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + @Test + public void getDeviceTimeTest() { + String time = driver.getDeviceTime(); + assertFalse(time.isEmpty()); + } + + @Test + public void isAppInstalledTest() { + assertTrue(driver.isAppInstalled(APP_ID)); + } + + @Test + public void isAppNotInstalledTest() { + assertFalse(driver.isAppInstalled("foo")); + } + + @Test + public void closeAppTest() { + driver.closeApp(); + driver.launchApp(); + assertEquals(".ApiDemos", driver.currentActivity()); + } + + @Test + public void pushFileTest() { + byte[] data = Base64.encodeBase64( + "The eventual code is no more than the deposit of your understanding. ~E. W. Dijkstra" + .getBytes()); + driver.pushFile("/data/local/tmp/remote.txt", data); + byte[] returnData = driver.pullFile("/data/local/tmp/remote.txt"); + String returnDataDecoded = new String(returnData); + assertEquals( + "The eventual code is no more than the deposit of your understanding. ~E. W. Dijkstra", + returnDataDecoded); + } + + @Test + public void pushTempFileTest() throws Exception { + File temp = File.createTempFile("Temp_", "_test"); + try { + FileUtils.writeStringToFile(temp, "The eventual code is no " + + "more than the deposit of your understanding. ~E. W. Dijkstra", "UTF-8", true); + driver.pushFile("/data/local/tmp/remote2.txt", temp); + byte[] returnData = driver.pullFile("/data/local/tmp/remote2.txt"); + String returnDataDecoded = new String(returnData); + assertEquals( + "The eventual code is no more than the deposit of " + + "your understanding. ~E. W. Dijkstra", + returnDataDecoded); + } finally { + FileUtils.forceDelete(temp); + } + } + + @Test + public void toggleLocationServicesTest() { + driver.toggleLocationServices(); + } + + @Test + public void geolocationTest() { + Location location = new Location(45, 45, 100); + driver.setLocation(location); + } + + @Test + public void orientationTest() { + assertEquals(ScreenOrientation.PORTRAIT, driver.getOrientation()); + driver.rotate(ScreenOrientation.LANDSCAPE); + assertEquals(ScreenOrientation.LANDSCAPE, driver.getOrientation()); + driver.rotate(ScreenOrientation.PORTRAIT); + } + + @Test + public void lockTest() { + try { + driver.lockDevice(); + assertTrue(driver.isDeviceLocked()); + } finally { + driver.unlockDevice(); + assertFalse(driver.isDeviceLocked()); + } + } + + @Test + public void runAppInBackgroundTest() { + long time = System.currentTimeMillis(); + driver.runAppInBackground(Duration.ofSeconds(4)); + long timeAfter = System.currentTimeMillis(); + assert (timeAfter - time > 3000); + } + + @Test + public void testApplicationsManagement() throws InterruptedException { + String appId = driver.getCurrentPackage(); + assertThat(driver.queryAppState(appId), equalTo(ApplicationState.RUNNING_IN_FOREGROUND)); + Thread.sleep(500); + driver.runAppInBackground(Duration.ofSeconds(-1)); + assertThat(driver.queryAppState(appId), lessThan(ApplicationState.RUNNING_IN_FOREGROUND)); + Thread.sleep(500); + driver.activateApp(appId); + assertThat(driver.queryAppState(appId), equalTo(ApplicationState.RUNNING_IN_FOREGROUND)); + } + + @Test + public void pullFileTest() { + byte[] data = + driver.pullFile("/data/system/users/userlist.xml"); + assert (data.length > 0); + } + + @Test + public void resetTest() { + driver.resetApp(); + } + + @Test + public void endTestCoverage() { + driver.endTestCoverage("android.intent.action.MAIN", ""); + } + + @Test + public void getDeviceUDIDTest() { + String deviceSerial = driver.getSessionDetail("deviceUDID").toString(); + assertNotNull(deviceSerial); + } + + @Test + public void getSessionMapData() { + Map map = (Map) driver.getSessionDetail("desired"); + assertNotEquals(map.size(), 0); + } + + @Test + public void deviceDetailsAndKeyboardTest() { + assertFalse(driver.isKeyboardShown()); + assertNotNull(driver.getDisplayDensity()); + assertNotEquals(0, driver.getSystemBars().size()); + } + + @Test + public void getSupportedPerformanceDataTypesTest() { + driver.startActivity(new Activity(APP_ID, ".ApiDemos")); + + List dataTypes = new ArrayList<>(); + dataTypes.add("cpuinfo"); + dataTypes.add("memoryinfo"); + dataTypes.add("batteryinfo"); + dataTypes.add("networkinfo"); + + List supportedPerformanceDataTypes = driver.getSupportedPerformanceDataTypes(); + + assertEquals(4, supportedPerformanceDataTypes.size()); + + for (int i = 0; i < supportedPerformanceDataTypes.size(); ++i) { + assertEquals(dataTypes.get(i), supportedPerformanceDataTypes.get(i)); + } + + + } + + @Test + public void getPerformanceDataTest() { + driver.startActivity(new Activity(APP_ID, ".ApiDemos")); + + List supportedPerformanceDataTypes = driver.getSupportedPerformanceDataTypes(); + + for (String dataType : supportedPerformanceDataTypes) { + + List> valueTable = driver.getPerformanceData(APP_ID, dataType, 60000); + + for (int j = 1; j < valueTable.size(); ++j) { + assertEquals(valueTable.subList(0, 0).size(), valueTable.subList(j, j).size()); + } + } + + } + + @Test + public void getCurrentPackageTest() { + assertEquals(APP_ID, driver.getCurrentPackage()); + } + + @Test public void validateAllSessions() { + List> jsonMap = driver.getAllSessionDetails(); + assertNotNull(jsonMap); + } } From b45c1a798831f32be6f43e6e0e2856277acae9a6 Mon Sep 17 00:00:00 2001 From: jayandran Date: Mon, 1 Jul 2019 22:40:02 +0530 Subject: [PATCH 2/5] Revert "Code changes for getting all session details" This reverts commit 76159eb0ea6bc5a4b343b2df10dcc8e30649db93. --- .../appium/java_client/HasSessionDetails.java | 17 - .../io/appium/java_client/MobileCommand.java | 4 - .../android/AndroidDriverTest.java | 547 +++++++++--------- 3 files changed, 271 insertions(+), 297 deletions(-) diff --git a/src/main/java/io/appium/java_client/HasSessionDetails.java b/src/main/java/io/appium/java_client/HasSessionDetails.java index 6611cbef8..b743363e5 100644 --- a/src/main/java/io/appium/java_client/HasSessionDetails.java +++ b/src/main/java/io/appium/java_client/HasSessionDetails.java @@ -17,20 +17,15 @@ package io.appium.java_client; import static io.appium.java_client.MobileCommand.GET_SESSION; -import static io.appium.java_client.MobileCommand.GET_ALLSESSION; import static java.util.Optional.ofNullable; import static java.util.stream.Collectors.toMap; import static org.apache.commons.lang3.StringUtils.isBlank; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import org.openqa.selenium.remote.Response; -import java.util.Arrays; -import java.util.List; import java.util.Map; - import javax.annotation.Nullable; public interface HasSessionDetails extends ExecutesMethod { @@ -91,16 +86,4 @@ default boolean isBrowser() { return ofNullable(getSessionDetail("browserName")) .orElse(null) != null; } - - /** - * Get All Sessions details - * @return List of Map objects with All Session Details - */ - @SuppressWarnings("unchecked") - default List> getAllSessionDetails() { - Response response = execute(GET_ALLSESSION); - List> resultSet = List.class.cast(response.getValue()); - return ImmutableList.>builder().addAll(resultSet).build(); - } - } diff --git a/src/main/java/io/appium/java_client/MobileCommand.java b/src/main/java/io/appium/java_client/MobileCommand.java index 87016dc57..4d2e3bffe 100644 --- a/src/main/java/io/appium/java_client/MobileCommand.java +++ b/src/main/java/io/appium/java_client/MobileCommand.java @@ -111,7 +111,6 @@ public class MobileCommand { protected static final String TOGGLE_DATA; protected static final String COMPARE_IMAGES; protected static final String EXECUTE_DRIVER_SCRIPT; - protected static final String GET_ALLSESSION; public static final Map commandRepository; @@ -187,7 +186,6 @@ public class MobileCommand { TOGGLE_DATA = "toggleData"; COMPARE_IMAGES = "compareImages"; EXECUTE_DRIVER_SCRIPT = "executeDriverScript"; - GET_ALLSESSION = "getAllSessions"; commandRepository = new HashMap<>(); commandRepository.put(RESET, postC("/session/:sessionId/appium/app/reset")); @@ -273,8 +271,6 @@ public class MobileCommand { commandRepository.put(TOGGLE_DATA, postC("/session/:sessionId/appium/device/toggle_data")); commandRepository.put(COMPARE_IMAGES, postC("/session/:sessionId/appium/compare_images")); commandRepository.put(EXECUTE_DRIVER_SCRIPT, postC("/session/:sessionId/appium/execute_driver")); - //Get All Session Details - commandRepository.put(GET_ALLSESSION, getC("/sessions")); } /** diff --git a/src/test/java/io/appium/java_client/android/AndroidDriverTest.java b/src/test/java/io/appium/java_client/android/AndroidDriverTest.java index d7a8a049c..65d086ad5 100644 --- a/src/test/java/io/appium/java_client/android/AndroidDriverTest.java +++ b/src/test/java/io/appium/java_client/android/AndroidDriverTest.java @@ -43,281 +43,276 @@ public class AndroidDriverTest extends BaseAndroidTest { - @Test - public void sendSMSTest() { - try { - driver.sendSMS("11111111", "call"); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - - @Test - public void getStatusTest() { - assertThat(driver.getStatus().get("build").toString(), Matchers.containsString(".")); - } - - @Test - public void gsmCallTest() { - try { - driver.makeGsmCall("11111111", GsmCallActions.CALL); - driver.makeGsmCall("11111111", GsmCallActions.ACCEPT); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - @Test - public void toggleWiFi() { - try { - driver.toggleWifi(); - } catch (Exception e) { - fail("Not able to toggle wifi"); - } - } - - @Test - public void toggleAirplane() { - try { - driver.toggleAirplaneMode(); - } catch (Exception e) { - fail("Not able to toggle airplane mode"); - } - } - - @Test - public void toggleData() { - try { - driver.toggleData(); - } catch (Exception e) { - fail("Not able to toggle data"); - } - } - - @Test - public void gsmSignalStrengthTest() { - try { - driver.setGsmSignalStrength(GsmSignalStrength.GREAT); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - @Test - public void gsmVoiceTest() { - try { - driver.setGsmVoice(GsmVoiceState.OFF); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - @Test - public void networkSpeedTest() { - try { - driver.setNetworkSpeed(NetworkSpeed.EDGE); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - @Test - public void powerTest() { - try { - driver.setPowerCapacity(100); - driver.setPowerAC(PowerACState.OFF); - } catch (Exception e) { - fail("method works only in emulators"); - } - } - - @Test - public void getDeviceTimeTest() { - String time = driver.getDeviceTime(); - assertFalse(time.isEmpty()); - } - - @Test - public void isAppInstalledTest() { - assertTrue(driver.isAppInstalled(APP_ID)); - } - - @Test - public void isAppNotInstalledTest() { - assertFalse(driver.isAppInstalled("foo")); - } - - @Test - public void closeAppTest() { - driver.closeApp(); - driver.launchApp(); - assertEquals(".ApiDemos", driver.currentActivity()); - } - - @Test - public void pushFileTest() { - byte[] data = Base64.encodeBase64( - "The eventual code is no more than the deposit of your understanding. ~E. W. Dijkstra" - .getBytes()); - driver.pushFile("/data/local/tmp/remote.txt", data); - byte[] returnData = driver.pullFile("/data/local/tmp/remote.txt"); - String returnDataDecoded = new String(returnData); - assertEquals( - "The eventual code is no more than the deposit of your understanding. ~E. W. Dijkstra", - returnDataDecoded); - } - - @Test - public void pushTempFileTest() throws Exception { - File temp = File.createTempFile("Temp_", "_test"); - try { - FileUtils.writeStringToFile(temp, "The eventual code is no " - + "more than the deposit of your understanding. ~E. W. Dijkstra", "UTF-8", true); - driver.pushFile("/data/local/tmp/remote2.txt", temp); - byte[] returnData = driver.pullFile("/data/local/tmp/remote2.txt"); - String returnDataDecoded = new String(returnData); - assertEquals( - "The eventual code is no more than the deposit of " - + "your understanding. ~E. W. Dijkstra", - returnDataDecoded); - } finally { - FileUtils.forceDelete(temp); - } - } - - @Test - public void toggleLocationServicesTest() { - driver.toggleLocationServices(); - } - - @Test - public void geolocationTest() { - Location location = new Location(45, 45, 100); - driver.setLocation(location); - } - - @Test - public void orientationTest() { - assertEquals(ScreenOrientation.PORTRAIT, driver.getOrientation()); - driver.rotate(ScreenOrientation.LANDSCAPE); - assertEquals(ScreenOrientation.LANDSCAPE, driver.getOrientation()); - driver.rotate(ScreenOrientation.PORTRAIT); - } - - @Test - public void lockTest() { - try { - driver.lockDevice(); - assertTrue(driver.isDeviceLocked()); - } finally { - driver.unlockDevice(); - assertFalse(driver.isDeviceLocked()); - } - } - - @Test - public void runAppInBackgroundTest() { - long time = System.currentTimeMillis(); - driver.runAppInBackground(Duration.ofSeconds(4)); - long timeAfter = System.currentTimeMillis(); - assert (timeAfter - time > 3000); - } - - @Test - public void testApplicationsManagement() throws InterruptedException { - String appId = driver.getCurrentPackage(); - assertThat(driver.queryAppState(appId), equalTo(ApplicationState.RUNNING_IN_FOREGROUND)); - Thread.sleep(500); - driver.runAppInBackground(Duration.ofSeconds(-1)); - assertThat(driver.queryAppState(appId), lessThan(ApplicationState.RUNNING_IN_FOREGROUND)); - Thread.sleep(500); - driver.activateApp(appId); - assertThat(driver.queryAppState(appId), equalTo(ApplicationState.RUNNING_IN_FOREGROUND)); - } - - @Test - public void pullFileTest() { - byte[] data = - driver.pullFile("/data/system/users/userlist.xml"); - assert (data.length > 0); - } - - @Test - public void resetTest() { - driver.resetApp(); - } - - @Test - public void endTestCoverage() { - driver.endTestCoverage("android.intent.action.MAIN", ""); - } - - @Test - public void getDeviceUDIDTest() { - String deviceSerial = driver.getSessionDetail("deviceUDID").toString(); - assertNotNull(deviceSerial); - } - - @Test - public void getSessionMapData() { - Map map = (Map) driver.getSessionDetail("desired"); - assertNotEquals(map.size(), 0); - } - - @Test - public void deviceDetailsAndKeyboardTest() { - assertFalse(driver.isKeyboardShown()); - assertNotNull(driver.getDisplayDensity()); - assertNotEquals(0, driver.getSystemBars().size()); - } - - @Test - public void getSupportedPerformanceDataTypesTest() { - driver.startActivity(new Activity(APP_ID, ".ApiDemos")); - - List dataTypes = new ArrayList<>(); - dataTypes.add("cpuinfo"); - dataTypes.add("memoryinfo"); - dataTypes.add("batteryinfo"); - dataTypes.add("networkinfo"); - - List supportedPerformanceDataTypes = driver.getSupportedPerformanceDataTypes(); - - assertEquals(4, supportedPerformanceDataTypes.size()); - - for (int i = 0; i < supportedPerformanceDataTypes.size(); ++i) { - assertEquals(dataTypes.get(i), supportedPerformanceDataTypes.get(i)); - } - - - } - - @Test - public void getPerformanceDataTest() { - driver.startActivity(new Activity(APP_ID, ".ApiDemos")); - - List supportedPerformanceDataTypes = driver.getSupportedPerformanceDataTypes(); - - for (String dataType : supportedPerformanceDataTypes) { - - List> valueTable = driver.getPerformanceData(APP_ID, dataType, 60000); - - for (int j = 1; j < valueTable.size(); ++j) { - assertEquals(valueTable.subList(0, 0).size(), valueTable.subList(j, j).size()); - } - } - - } - - @Test - public void getCurrentPackageTest() { - assertEquals(APP_ID, driver.getCurrentPackage()); - } - - @Test public void validateAllSessions() { - List> jsonMap = driver.getAllSessionDetails(); - assertNotNull(jsonMap); - } + @Test + public void sendSMSTest() { + try { + driver.sendSMS("11111111", "call"); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + + @Test + public void getStatusTest() { + assertThat(driver.getStatus().get("build").toString(), Matchers.containsString(".")); + } + + @Test + public void gsmCallTest() { + try { + driver.makeGsmCall("11111111", GsmCallActions.CALL); + driver.makeGsmCall("11111111", GsmCallActions.ACCEPT); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + @Test + public void toggleWiFi() { + try { + driver.toggleWifi(); + } catch (Exception e) { + fail("Not able to toggle wifi"); + } + } + + @Test + public void toggleAirplane() { + try { + driver.toggleAirplaneMode(); + } catch (Exception e) { + fail("Not able to toggle airplane mode"); + } + } + + @Test + public void toggleData() { + try { + driver.toggleData(); + } catch (Exception e) { + fail("Not able to toggle data"); + } + } + + @Test + public void gsmSignalStrengthTest() { + try { + driver.setGsmSignalStrength(GsmSignalStrength.GREAT); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + @Test + public void gsmVoiceTest() { + try { + driver.setGsmVoice(GsmVoiceState.OFF); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + @Test + public void networkSpeedTest() { + try { + driver.setNetworkSpeed(NetworkSpeed.EDGE); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + @Test + public void powerTest() { + try { + driver.setPowerCapacity(100); + driver.setPowerAC(PowerACState.OFF); + } catch (Exception e) { + fail("method works only in emulators"); + } + } + + @Test + public void getDeviceTimeTest() { + String time = driver.getDeviceTime(); + assertFalse(time.isEmpty()); + } + + @Test + public void isAppInstalledTest() { + assertTrue(driver.isAppInstalled(APP_ID)); + } + + @Test + public void isAppNotInstalledTest() { + assertFalse(driver.isAppInstalled("foo")); + } + + @Test + public void closeAppTest() { + driver.closeApp(); + driver.launchApp(); + assertEquals(".ApiDemos", driver.currentActivity()); + } + + @Test + public void pushFileTest() { + byte[] data = Base64.encodeBase64( + "The eventual code is no more than the deposit of your understanding. ~E. W. Dijkstra" + .getBytes()); + driver.pushFile("/data/local/tmp/remote.txt", data); + byte[] returnData = driver.pullFile("/data/local/tmp/remote.txt"); + String returnDataDecoded = new String(returnData); + assertEquals( + "The eventual code is no more than the deposit of your understanding. ~E. W. Dijkstra", + returnDataDecoded); + } + + @Test + public void pushTempFileTest() throws Exception { + File temp = File.createTempFile("Temp_", "_test"); + try { + FileUtils.writeStringToFile(temp, "The eventual code is no " + + "more than the deposit of your understanding. ~E. W. Dijkstra", "UTF-8", true); + driver.pushFile("/data/local/tmp/remote2.txt", temp); + byte[] returnData = driver.pullFile("/data/local/tmp/remote2.txt"); + String returnDataDecoded = new String(returnData); + assertEquals( + "The eventual code is no more than the deposit of " + + "your understanding. ~E. W. Dijkstra", + returnDataDecoded); + } finally { + FileUtils.forceDelete(temp); + } + } + + @Test + public void toggleLocationServicesTest() { + driver.toggleLocationServices(); + } + + @Test + public void geolocationTest() { + Location location = new Location(45, 45, 100); + driver.setLocation(location); + } + + @Test + public void orientationTest() { + assertEquals(ScreenOrientation.PORTRAIT, driver.getOrientation()); + driver.rotate(ScreenOrientation.LANDSCAPE); + assertEquals(ScreenOrientation.LANDSCAPE, driver.getOrientation()); + driver.rotate(ScreenOrientation.PORTRAIT); + } + + @Test + public void lockTest() { + try { + driver.lockDevice(); + assertTrue(driver.isDeviceLocked()); + } finally { + driver.unlockDevice(); + assertFalse(driver.isDeviceLocked()); + } + } + + @Test + public void runAppInBackgroundTest() { + long time = System.currentTimeMillis(); + driver.runAppInBackground(Duration.ofSeconds(4)); + long timeAfter = System.currentTimeMillis(); + assert (timeAfter - time > 3000); + } + + @Test + public void testApplicationsManagement() throws InterruptedException { + String appId = driver.getCurrentPackage(); + assertThat(driver.queryAppState(appId), equalTo(ApplicationState.RUNNING_IN_FOREGROUND)); + Thread.sleep(500); + driver.runAppInBackground(Duration.ofSeconds(-1)); + assertThat(driver.queryAppState(appId), lessThan(ApplicationState.RUNNING_IN_FOREGROUND)); + Thread.sleep(500); + driver.activateApp(appId); + assertThat(driver.queryAppState(appId), equalTo(ApplicationState.RUNNING_IN_FOREGROUND)); + } + + @Test + public void pullFileTest() { + byte[] data = + driver.pullFile("/data/system/users/userlist.xml"); + assert (data.length > 0); + } + + @Test + public void resetTest() { + driver.resetApp(); + } + + @Test + public void endTestCoverage() { + driver.endTestCoverage("android.intent.action.MAIN", ""); + } + + @Test + public void getDeviceUDIDTest() { + String deviceSerial = driver.getSessionDetail("deviceUDID").toString(); + assertNotNull(deviceSerial); + } + + @Test + public void getSessionMapData() { + Map map = (Map) driver.getSessionDetail("desired"); + assertNotEquals(map.size(), 0); + } + + @Test + public void deviceDetailsAndKeyboardTest() { + assertFalse(driver.isKeyboardShown()); + assertNotNull(driver.getDisplayDensity()); + assertNotEquals(0, driver.getSystemBars().size()); + } + + @Test + public void getSupportedPerformanceDataTypesTest() { + driver.startActivity(new Activity(APP_ID, ".ApiDemos")); + + List dataTypes = new ArrayList<>(); + dataTypes.add("cpuinfo"); + dataTypes.add("memoryinfo"); + dataTypes.add("batteryinfo"); + dataTypes.add("networkinfo"); + + List supportedPerformanceDataTypes = driver.getSupportedPerformanceDataTypes(); + + assertEquals(4, supportedPerformanceDataTypes.size()); + + for (int i = 0; i < supportedPerformanceDataTypes.size(); ++i) { + assertEquals(dataTypes.get(i), supportedPerformanceDataTypes.get(i)); + } + + + } + + @Test + public void getPerformanceDataTest() { + driver.startActivity(new Activity(APP_ID, ".ApiDemos")); + + List supportedPerformanceDataTypes = driver.getSupportedPerformanceDataTypes(); + + for (String dataType : supportedPerformanceDataTypes) { + + List> valueTable = driver.getPerformanceData(APP_ID, dataType, 60000); + + for (int j = 1; j < valueTable.size(); ++j) { + assertEquals(valueTable.subList(0, 0).size(), valueTable.subList(j, j).size()); + } + } + + } + + @Test + public void getCurrentPackageTest() { + assertEquals(APP_ID, driver.getCurrentPackage()); + } } From 0501c06cb01ba5ccdf2acdfe58c9e26ca980e7ee Mon Sep 17 00:00:00 2001 From: jayandran Date: Mon, 1 Jul 2019 22:50:45 +0530 Subject: [PATCH 3/5] Updated the comments and recommitting the changes --- .../io/appium/java_client/HasSessionDetails.java | 14 ++++++++++++++ .../java/io/appium/java_client/MobileCommand.java | 3 +++ .../java_client/android/AndroidDriverTest.java | 5 +++++ 3 files changed, 22 insertions(+) diff --git a/src/main/java/io/appium/java_client/HasSessionDetails.java b/src/main/java/io/appium/java_client/HasSessionDetails.java index b743363e5..a0b9c4d8b 100644 --- a/src/main/java/io/appium/java_client/HasSessionDetails.java +++ b/src/main/java/io/appium/java_client/HasSessionDetails.java @@ -17,14 +17,17 @@ package io.appium.java_client; import static io.appium.java_client.MobileCommand.GET_SESSION; +import static io.appium.java_client.MobileCommand.GET_ALLSESSION; import static java.util.Optional.ofNullable; import static java.util.stream.Collectors.toMap; import static org.apache.commons.lang3.StringUtils.isBlank; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import org.openqa.selenium.remote.Response; +import java.util.List; import java.util.Map; import javax.annotation.Nullable; @@ -86,4 +89,15 @@ default boolean isBrowser() { return ofNullable(getSessionDetail("browserName")) .orElse(null) != null; } + + /** + * Get All Sessions details + * @return List of Map objects with All Session Details + */ + @SuppressWarnings("unchecked") + default List> getAllSessionDetails() { + Response response = execute(GET_ALLSESSION); + List> resultSet = List.class.cast(response.getValue()); + return ImmutableList.>builder().addAll(resultSet).build(); + } } diff --git a/src/main/java/io/appium/java_client/MobileCommand.java b/src/main/java/io/appium/java_client/MobileCommand.java index 4d2e3bffe..aaf855468 100644 --- a/src/main/java/io/appium/java_client/MobileCommand.java +++ b/src/main/java/io/appium/java_client/MobileCommand.java @@ -111,6 +111,7 @@ public class MobileCommand { protected static final String TOGGLE_DATA; protected static final String COMPARE_IMAGES; protected static final String EXECUTE_DRIVER_SCRIPT; + protected static final String GET_ALLSESSION; public static final Map commandRepository; @@ -186,6 +187,7 @@ public class MobileCommand { TOGGLE_DATA = "toggleData"; COMPARE_IMAGES = "compareImages"; EXECUTE_DRIVER_SCRIPT = "executeDriverScript"; + GET_ALLSESSION = "getAllSessions"; commandRepository = new HashMap<>(); commandRepository.put(RESET, postC("/session/:sessionId/appium/app/reset")); @@ -271,6 +273,7 @@ public class MobileCommand { commandRepository.put(TOGGLE_DATA, postC("/session/:sessionId/appium/device/toggle_data")); commandRepository.put(COMPARE_IMAGES, postC("/session/:sessionId/appium/compare_images")); commandRepository.put(EXECUTE_DRIVER_SCRIPT, postC("/session/:sessionId/appium/execute_driver")); + commandRepository.put(GET_ALLSESSION, getC("/sessions")); } /** diff --git a/src/test/java/io/appium/java_client/android/AndroidDriverTest.java b/src/test/java/io/appium/java_client/android/AndroidDriverTest.java index 65d086ad5..1f3c0ae00 100644 --- a/src/test/java/io/appium/java_client/android/AndroidDriverTest.java +++ b/src/test/java/io/appium/java_client/android/AndroidDriverTest.java @@ -314,5 +314,10 @@ public void getPerformanceDataTest() { public void getCurrentPackageTest() { assertEquals(APP_ID, driver.getCurrentPackage()); } + + @Test public void validateAllSessions() { + List> jsonMap = driver.getAllSessionDetails(); + assertNotNull(jsonMap); + } } From 257322e1c5c80a1ef6fa807268188bb0bfe41588 Mon Sep 17 00:00:00 2001 From: jayandran Date: Mon, 1 Jul 2019 22:56:24 +0530 Subject: [PATCH 4/5] Organised import statement as per comments --- src/main/java/io/appium/java_client/HasSessionDetails.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/appium/java_client/HasSessionDetails.java b/src/main/java/io/appium/java_client/HasSessionDetails.java index a0b9c4d8b..a19e7d259 100644 --- a/src/main/java/io/appium/java_client/HasSessionDetails.java +++ b/src/main/java/io/appium/java_client/HasSessionDetails.java @@ -16,8 +16,8 @@ package io.appium.java_client; -import static io.appium.java_client.MobileCommand.GET_SESSION; import static io.appium.java_client.MobileCommand.GET_ALLSESSION; +import static io.appium.java_client.MobileCommand.GET_SESSION; import static java.util.Optional.ofNullable; import static java.util.stream.Collectors.toMap; import static org.apache.commons.lang3.StringUtils.isBlank; From 3fbbf2f708a8d1b18096fd13c21ec927635c0c2f Mon Sep 17 00:00:00 2001 From: jayandran Date: Tue, 2 Jul 2019 10:02:14 +0530 Subject: [PATCH 5/5] Updated as per comments --- src/main/java/io/appium/java_client/HasSessionDetails.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/appium/java_client/HasSessionDetails.java b/src/main/java/io/appium/java_client/HasSessionDetails.java index a19e7d259..1ae3f9f80 100644 --- a/src/main/java/io/appium/java_client/HasSessionDetails.java +++ b/src/main/java/io/appium/java_client/HasSessionDetails.java @@ -91,8 +91,9 @@ default boolean isBrowser() { } /** - * Get All Sessions details - * @return List of Map objects with All Session Details + * Get All Sessions details. + * + * @return List of Map objects with All Session Details. */ @SuppressWarnings("unchecked") default List> getAllSessionDetails() {