Java tutorial
/* * * 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 com.vmware.gemfire.tools.pulse.tests; import static org.junit.Assert.*; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.text.DecimalFormat; import java.util.List; import java.util.Properties; import java.util.concurrent.TimeUnit; import com.jayway.awaitility.Awaitility; import org.junit.AfterClass; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import com.gemstone.gemfire.management.internal.JettyHelper; import com.vmware.gemfire.tools.pulse.internal.data.PulseConstants; @SuppressWarnings("deprecated") public abstract class PulseAbstractTest extends PulseBaseTest { private static String jmxPropertiesFile; private static String path; private static org.eclipse.jetty.server.Server jetty = null; private static Server server = null; private static String pulseURL = null; public static WebDriver driver; /* Constants for executing Data Browser queries */ public static final String QUERY_TYPE_ONE = "query1"; public static final String QUERY_TYPE_TWO = "query2"; public static final String QUERY_TYPE_THREE = "query3"; public static final String QUERY_TYPE_FOUR = "query4"; public static final String QUERY_TYPE_FIVE = "query5"; public static final String QUERY_TYPE_SIX = "query6"; public static final String QUERY_TYPE_SEVENE = "query7"; private static final String DATA_VIEW_LABEL = "Data View"; private static final String CLUSTER_VIEW_MEMBERS_ID = "clusterTotalMembersText"; private static final String CLUSTER_VIEW_SERVERS_ID = "clusterServersText"; private static final String CLUSTER_VIEW_LOCATORS_ID = "clusterLocatorsText"; private static final String CLUSTER_VIEW_REGIONS_ID = "clusterTotalRegionsText"; private static final String CLUSTER_CLIENTS_ID = "clusterClientsText"; private static final String CLUSTER_FUNCTIONS_ID = "clusterFunctions"; private static final String CLUSTER_UNIQUECQS_ID = "clusterUniqueCQs"; private static final String CLUSTER_SUBSCRIPTION_ID = "clusterSubscriptionsText"; private static final String CLUSTER_MEMORY_USAGE_ID = "currentMemoryUsage"; private static final String CLUSTER_THROUGHPUT_WRITES_ID = "currentThroughputWrites"; private static final String CLUSTER_GCPAUSES_ID = "currentGCPauses"; private static final String CLUSTER_WRITEPERSEC_ID = "writePerSec"; private static final String CLUSTER_READPERSEC_ID = "readPerSec"; private static final String CLUSTER_QUERIESPERSEC_ID = "queriesPerSec"; private static final String CLUSTER_PROCEDURE_ID = "clusterTxnCommittedText"; private static final String CLUSTER_TXNCOMMITTED_ID = "clusterTxnCommittedText"; private static final String CLUSTER_TXNROLLBACK_ID = "clusterTxnRollbackText"; private static final String MEMBER_VIEW_MEMBERNAME_ID = "memberName"; private static final String MEMBER_VIEW_REGION_ID = "memberRegionsCount"; private static final String MEMBER_VIEW_THREAD_ID = "threads"; private static final String MEMBER_VIEW_SOCKETS_ID = "sockets"; private static final String MEMBER_VIEW_LOADAVG_ID = "loadAverage"; private static final String MEMBER_VIEW_LISTENINGPORT_ID = "receiverListeningPort"; private static final String MEMBER_VIEW_LINKTHROUGHPUT_ID = "receiverLinkThroughput"; private static final String MEMBER_VIEW_AVGBATCHLATENCY_ID = "receiverAvgBatchLatency"; private static final String MEMBER_VIEW_HEAPUSAGE_ID = "memberHeapUsageAvg"; private static final String MEMBER_VIEW_JVMPAUSES_ID = "memberGcPausesAvg"; private static final String MEMBER_VIEW_CPUUSAGE_ID = "memberCPUUsageValue"; private static final String MEMBER_VIEW_READPERSEC_ID = "memberGetsPerSecValue"; private static final String MEMBER_VIEW_WRITEPERSEC_ID = "memberPutsPerSecValue"; private static final String MEMBER_VIEW_OFFHEAPFREESIZE_ID = "offHeapFreeSize"; private static final String MEMBER_VIEW_OFFHEAPUSEDSIZE_ID = "offHeapUsedSize"; private static final String MEMBER_VIEW_CLIENTS_ID = "clusterClientsText"; private static final String REGION_NAME_LABEL = "regionName"; private static final String REGION_PATH_LABEL = "regionPath"; private static final String REGION_TYPE_LABEL = "regionType"; private static final String DATA_VIEW_WRITEPERSEC = "regionWrites"; private static final String DATA_VIEW_READPERSEC = "regionReads"; private static final String DATA_VIEW_EMPTYNODES = "regionEmptyNodes"; private static final String DATA_VIEW_ENTRYCOUNT = "regionEntryCount"; private static final String REGION_PERSISTENCE_LABEL = "regionPersistence"; private static final String DATA_VIEW_USEDMEMORY = "memoryUsed"; private static final String DATA_VIEW_TOTALMEMORY = "totalMemory"; private static final String DATA_BROWSER_LABEL = "Data Browser"; private static final String DATA_BROWSER_REGIONName1 = "treeDemo_1_span"; private static final String DATA_BROWSER_REGIONName2 = "treeDemo_2_span"; private static final String DATA_BROWSER_REGIONName3 = "treeDemo_3_span"; private static final String DATA_BROWSER_REGION1_CHECKBOX = "treeDemo_1_check"; private static final String DATA_BROWSER_REGION2_CHECKBOX = "treeDemo_2_check"; private static final String DATA_BROWSER_REGION3_CHECKBOX = "treeDemo_3_check"; private static final String DATA_BROWSER_COLOCATED_REGION = "Colocated Regions"; private static final String DATA_BROWSER_COLOCATED_REGION_NAME1 = "treeDemo_1_span"; private static final String DATA_BROWSER_COLOCATED_REGION_NAME2 = "treeDemo_2_span"; private static final String DATA_BROWSER_COLOCATED_REGION_NAME3 = "treeDemo_3_span"; private static final String QUERY_STATISTICS_LABEL = "Query Statistics"; private static final String CLUSTER_VIEW_LABEL = "Cluster View"; private static final String CLUSTER_VIEW_GRID_ID = "default_treemap_button"; private static final String SERVER_GROUP_GRID_ID = "servergroups_treemap_button"; private static final String REDUNDANCY_GRID_ID = "redundancyzones_treemap_button"; private static final String MEMBER_DROPDOWN_ID = "Members"; private static final String DATA_DROPDOWN_ID = "Data"; private static final DecimalFormat df2 = new DecimalFormat(PulseConstants.DECIMAL_FORMAT_PATTERN); public static void setUpServer(String username, String password, String jsonAuthFile) throws Exception { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); jmxPropertiesFile = classLoader.getResource("test.properties").getPath(); path = getPulseWarPath(); server = Server.createServer(9999, jmxPropertiesFile, jsonAuthFile); String host = "localhost"; int port = 8080; String context = "/pulse"; jetty = JettyHelper.initJetty(host, port, false, false, null, null, null); JettyHelper.addWebApplication(jetty, context, getPulseWarPath()); jetty.start(); pulseURL = "http://" + host + ":" + port + context; Awaitility.await().until(() -> jetty.isStarted()); driver = new FirefoxDriver(); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); driver.get(pulseURL); WebElement userNameElement = driver.findElement(By.id("user_name")); WebElement passwordElement = driver.findElement(By.id("user_password")); userNameElement.sendKeys(username); passwordElement.sendKeys(password); passwordElement.submit(); Thread.sleep(3000); WebElement userNameOnPulsePage = (new WebDriverWait(driver, 10)).until(new ExpectedCondition<WebElement>() { @Override public WebElement apply(WebDriver d) { return d.findElement(By.id("userName")); } }); assertNotNull(userNameOnPulsePage); driver.navigate().refresh(); Thread.sleep(7000); } @AfterClass public static void tearDownAfterClass() throws Exception { driver.close(); jetty.stop(); } @Before public void setup() throws Exception { // Make sure we go to the home page first searchByXPathAndClick(PulseTestLocators.TopNavigation.clusterViewLinkXpath); } public static String getPulseWarPath() throws Exception { String warPath = null; ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); InputStream inputStream = classLoader.getResourceAsStream("GemFireVersion.properties"); Properties properties = new Properties(); properties.load(inputStream); String version = properties.getProperty("Product-Version"); warPath = "geode-pulse-" + version + ".war"; String propFilePath = classLoader.getResource("GemFireVersion.properties").getPath(); warPath = propFilePath.substring(0, propFilePath.indexOf("generated-resources")) + "libs/" + warPath; return warPath; } protected void searchByLinkAndClick(String linkText) { WebElement element = By.linkText(linkText).findElement(driver); assertNotNull(element); element.click(); } protected void searchByIdAndClick(String id) { WebElement element = driver.findElement(By.id(id)); assertNotNull(element); element.click(); } protected void searchByClassAndClick(String Class) { WebElement element = driver.findElement(By.className(Class)); assertNotNull(element); element.click(); } protected void searchByXPathAndClick(String xpath) { WebElement element = driver.findElement(By.xpath(xpath)); assertNotNull(element); element.click(); } protected void waitForElementByClassName(final String className, int seconds) { WebElement linkTextOnPulsePage1 = (new WebDriverWait(driver, seconds)) .until(new ExpectedCondition<WebElement>() { @Override public WebElement apply(WebDriver d) { return d.findElement(By.className(className)); } }); assertNotNull(linkTextOnPulsePage1); } protected void waitForElementById(final String id, int seconds) { WebElement element = (new WebDriverWait(driver, 10)).until(new ExpectedCondition<WebElement>() { @Override public WebElement apply(WebDriver d) { return d.findElement(By.id(id)); } }); assertNotNull(element); } protected void scrollbarVerticalDownScroll() { JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("javascript:window.scrollBy(250,700)"); WebElement pickerScroll = driver.findElement(By.className("jspDrag")); WebElement pickerScrollCorner = driver.findElement(By.className("jspCorner")); Actions builder = new Actions(driver); Actions movePicker = builder.dragAndDrop(pickerScroll, pickerScrollCorner); // pickerscroll is the web element movePicker.perform(); } protected void scrollbarHorizontalRightScroll() { JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("javascript:window.scrollBy(250,700)"); WebElement pickerScroll = driver .findElement(By.xpath("//div[@id='gview_queryStatisticsList']/div[3]/div/div[3]/div[2]/div")); WebElement pickerScrollCorner = driver.findElement(By.className("jspCorner")); Actions builder = new Actions(driver); Actions movePicker = builder.dragAndDrop(pickerScroll, pickerScrollCorner); // pickerscroll is the web element movePicker.perform(); } @Test public void testClusterLocatorCount() throws IOException { String clusterLocators = driver.findElement(By.id(CLUSTER_VIEW_LOCATORS_ID)).getText(); String totallocators = JMXProperties.getInstance().getProperty("server.S1.locatorCount"); assertEquals(totallocators, clusterLocators); } @Test public void testClusterRegionCount() { String clusterRegions = driver.findElement(By.id(CLUSTER_VIEW_REGIONS_ID)).getText(); String totalregions = JMXProperties.getInstance().getProperty("server.S1.totalRegionCount"); assertEquals(totalregions, clusterRegions); } @Test public void testClusterMemberCount() { String clusterMembers = driver.findElement(By.id(CLUSTER_VIEW_MEMBERS_ID)).getText(); String totalMembers = JMXProperties.getInstance().getProperty("server.S1.memberCount"); assertEquals(totalMembers, clusterMembers); } @Test public void testClusterNumClient() { String clusterClients = driver.findElement(By.id(CLUSTER_CLIENTS_ID)).getText(); String totalclients = JMXProperties.getInstance().getProperty("server.S1.numClients"); assertEquals(totalclients, clusterClients); } @Test public void testClusterNumRunningFunction() { String clusterFunctions = driver.findElement(By.id(CLUSTER_FUNCTIONS_ID)).getText(); String totalfunctions = JMXProperties.getInstance().getProperty("server.S1.numRunningFunctions"); assertEquals(totalfunctions, clusterFunctions); } @Test public void testClusterRegisteredCQCount() { String clusterUniqueCQs = driver.findElement(By.id(CLUSTER_UNIQUECQS_ID)).getText(); String totaluniqueCQs = JMXProperties.getInstance().getProperty("server.S1.registeredCQCount"); assertEquals(totaluniqueCQs, clusterUniqueCQs); } @Test public void testClusterNumSubscriptions() { String clusterSubscriptions = driver.findElement(By.id(CLUSTER_SUBSCRIPTION_ID)).getText(); String totalSubscriptions = JMXProperties.getInstance().getProperty("server.S1.numSubscriptions"); assertEquals(totalSubscriptions, clusterSubscriptions); } @Test public void testClusterJVMPausesWidget() { String clusterJVMPauses = driver.findElement(By.id(CLUSTER_GCPAUSES_ID)).getText(); String totalgcpauses = JMXProperties.getInstance().getProperty("server.S1.jvmPauses"); assertEquals(totalgcpauses, clusterJVMPauses); } @Test public void testClusterAverageWritesWidget() { String clusterWritePerSec = driver.findElement(By.id(CLUSTER_WRITEPERSEC_ID)).getText(); String totalwritepersec = JMXProperties.getInstance().getProperty("server.S1.averageWrites"); assertEquals(totalwritepersec, clusterWritePerSec); } @Test public void testClusterAverageReadsWidget() { String clusterReadPerSec = driver.findElement(By.id(CLUSTER_READPERSEC_ID)).getText(); String totalreadpersec = JMXProperties.getInstance().getProperty("server.S1.averageReads"); assertEquals(totalreadpersec, clusterReadPerSec); } @Test public void testClusterQuerRequestRateWidget() { String clusterQueriesPerSec = driver.findElement(By.id(CLUSTER_QUERIESPERSEC_ID)).getText(); String totalqueriespersec = JMXProperties.getInstance().getProperty("server.S1.queryRequestRate"); assertEquals(totalqueriespersec, clusterQueriesPerSec); } @Test public void testClusterGridViewMemberID() throws InterruptedException { searchByIdAndClick("default_grid_button"); List<WebElement> elements = driver.findElements(By.xpath("//table[@id='memberList']/tbody/tr")); //gives me 11 rows for (int memberCount = 1; memberCount < elements.size(); memberCount++) { String memberId = driver .findElement(By.xpath("//table[@id='memberList']/tbody/tr[" + (memberCount + 1) + "]/td")) .getText(); String propertMemeberId = JMXProperties.getInstance().getProperty("member.M" + memberCount + ".id"); assertEquals(memberId, propertMemeberId); } } @Test public void testClusterGridViewMemberName() { searchByIdAndClick("default_grid_button"); List<WebElement> elements = driver.findElements(By.xpath("//table[@id='memberList']/tbody/tr")); for (int memberNameCount = 1; memberNameCount < elements.size(); memberNameCount++) { String gridMemberName = driver .findElement( By.xpath("//table[@id='memberList']/tbody/tr[" + (memberNameCount + 1) + "]/td[2]")) .getText(); String memberName = JMXProperties.getInstance().getProperty("member.M" + memberNameCount + ".member"); assertEquals(gridMemberName, memberName); } } @Test public void testClusterGridViewMemberHost() { searchByIdAndClick("default_grid_button"); List<WebElement> elements = driver.findElements(By.xpath("//table[@id='memberList']/tbody/tr")); for (int memberHostCount = 1; memberHostCount < elements.size(); memberHostCount++) { String MemberHost = driver .findElement( By.xpath("//table[@id='memberList']/tbody/tr[" + (memberHostCount + 1) + "]/td[3]")) .getText(); String gridMemberHost = JMXProperties.getInstance().getProperty("member.M" + memberHostCount + ".host"); assertEquals(gridMemberHost, MemberHost); } } @Test public void testClusterGridViewHeapUsage() { searchByIdAndClick("default_grid_button"); for (int i = 1; i <= 3; i++) { Float HeapUsage = Float.parseFloat(driver .findElement(By.xpath("//table[@id='memberList']/tbody/tr[" + (i + 1) + "]/td[5]")).getText()); Float gridHeapUsagestring = Float .parseFloat(JMXProperties.getInstance().getProperty("member.M" + i + ".UsedMemory")); assertEquals(gridHeapUsagestring, HeapUsage); } } @Test public void testClusterGridViewCPUUsage() throws Exception { searchByIdAndClick("default_grid_button"); for (int i = 1; i <= 3; i++) { String CPUUsage = driver .findElement(By.xpath("//table[@id='memberList']/tbody/tr[" + (i + 1) + "]/td[6]")).getText(); String gridCPUUsage = JMXProperties.getInstance().getProperty("member.M" + i + ".cpuUsage"); gridCPUUsage = gridCPUUsage.trim(); assertEquals(gridCPUUsage, CPUUsage); } } public void testRgraphWidget() throws InterruptedException { searchByIdAndClick("default_rgraph_button"); searchByIdAndClick("h1"); searchByIdAndClick("M1"); } @Test // region count in properties file is 2 and UI is 1 public void testMemberTotalRegionCount() throws InterruptedException { testRgraphWidget(); String RegionCount = driver.findElement(By.id(MEMBER_VIEW_REGION_ID)).getText(); String memberRegionCount = JMXProperties.getInstance().getProperty("member.M1.totalRegionCount"); assertEquals(memberRegionCount, RegionCount); } @Test public void testMemberNumThread() throws InterruptedException { searchByIdAndClick("default_grid_button"); searchByIdAndClick("M1&M1"); String ThreadCount = driver.findElement(By.id(MEMBER_VIEW_THREAD_ID)).getText(); String memberThreadCount = JMXProperties.getInstance().getProperty("member.M1.numThreads"); assertEquals(memberThreadCount, ThreadCount); } @Test public void testMemberTotalFileDescriptorOpen() throws InterruptedException { searchByIdAndClick("default_grid_button"); searchByIdAndClick("M1&M1"); String SocketCount = driver.findElement(By.id(MEMBER_VIEW_SOCKETS_ID)).getText(); String memberSocketCount = JMXProperties.getInstance().getProperty("member.M1.totalFileDescriptorOpen"); assertEquals(memberSocketCount, SocketCount); } @Test public void testMemberLoadAverage() throws InterruptedException { searchByIdAndClick("default_grid_button"); searchByIdAndClick("M1&M1"); String LoadAvg = driver.findElement(By.id(MEMBER_VIEW_LOADAVG_ID)).getText(); String memberLoadAvg = JMXProperties.getInstance().getProperty("member.M1.loadAverage"); assertEquals(df2.format(Double.valueOf(memberLoadAvg)), LoadAvg); } @Ignore("WIP") // May be useful in near future @Test public void testOffHeapFreeSize() { String OffHeapFreeSizeString = driver.findElement(By.id(MEMBER_VIEW_OFFHEAPFREESIZE_ID)).getText(); String OffHeapFreeSizetemp = OffHeapFreeSizeString.replaceAll("[a-zA-Z]", ""); float OffHeapFreeSize = Float.parseFloat(OffHeapFreeSizetemp); float memberOffHeapFreeSize = Float .parseFloat(JMXProperties.getInstance().getProperty("member.M1.OffHeapFreeSize")); if (memberOffHeapFreeSize < 1048576) { memberOffHeapFreeSize = memberOffHeapFreeSize / 1024; } else if (memberOffHeapFreeSize < 1073741824) { memberOffHeapFreeSize = memberOffHeapFreeSize / 1024 / 1024; } else { memberOffHeapFreeSize = memberOffHeapFreeSize / 1024 / 1024 / 1024; } memberOffHeapFreeSize = Float.parseFloat(new DecimalFormat("##.##").format(memberOffHeapFreeSize)); assertEquals(memberOffHeapFreeSize, OffHeapFreeSize); } @Ignore("WIP") // May be useful in near future @Test public void testOffHeapUsedSize() throws InterruptedException { String OffHeapUsedSizeString = driver.findElement(By.id(MEMBER_VIEW_OFFHEAPUSEDSIZE_ID)).getText(); String OffHeapUsedSizetemp = OffHeapUsedSizeString.replaceAll("[a-zA-Z]", ""); float OffHeapUsedSize = Float.parseFloat(OffHeapUsedSizetemp); float memberOffHeapUsedSize = Float .parseFloat(JMXProperties.getInstance().getProperty("member.M1.OffHeapUsedSize")); if (memberOffHeapUsedSize < 1048576) { memberOffHeapUsedSize = memberOffHeapUsedSize / 1024; } else if (memberOffHeapUsedSize < 1073741824) { memberOffHeapUsedSize = memberOffHeapUsedSize / 1024 / 1024; } else { memberOffHeapUsedSize = memberOffHeapUsedSize / 1024 / 1024 / 1024; } memberOffHeapUsedSize = Float.parseFloat(new DecimalFormat("##.##").format(memberOffHeapUsedSize)); assertEquals(memberOffHeapUsedSize, OffHeapUsedSize); } @Test public void testMemberJVMPauses() throws Exception { searchByIdAndClick("default_grid_button"); searchByIdAndClick("M1&M1"); String JVMPauses = driver.findElement(By.id(MEMBER_VIEW_JVMPAUSES_ID)).getText(); String memberGcPausesAvg = JMXProperties.getInstance().getProperty("member.M1.JVMPauses"); assertEquals(memberGcPausesAvg, JVMPauses); } @Test public void testMemberCPUUsage() { searchByIdAndClick("default_grid_button"); searchByIdAndClick("M1&M1"); String CPUUsagevalue = driver.findElement(By.id(MEMBER_VIEW_CPUUSAGE_ID)).getText(); String memberCPUUsage = JMXProperties.getInstance().getProperty("member.M1.cpuUsage"); assertEquals(memberCPUUsage, CPUUsagevalue); } @Test // difference between UI and properties file public void testMemberAverageReads() { searchByIdAndClick("default_grid_button"); searchByIdAndClick("M1&M1"); float ReadPerSec = Float.parseFloat(driver.findElement(By.id(MEMBER_VIEW_READPERSEC_ID)).getText()); float memberReadPerSec = Float .parseFloat(JMXProperties.getInstance().getProperty("member.M1.averageReads")); memberReadPerSec = Float.parseFloat(new DecimalFormat("##.##").format(memberReadPerSec)); assertEquals(memberReadPerSec, ReadPerSec); } @Test public void testMemberAverageWrites() throws InterruptedException { testRgraphWidget(); String WritePerSec = driver.findElement(By.id(MEMBER_VIEW_WRITEPERSEC_ID)).getText(); String memberWritePerSec = JMXProperties.getInstance().getProperty("member.M1.averageWrites"); assertEquals(memberWritePerSec, WritePerSec); } @Test public void testMemberGridViewData() throws InterruptedException { testRgraphWidget(); searchByXPathAndClick(PulseTestLocators.MemberDetailsView.gridButtonXpath); // get the number of rows on the grid List<WebElement> noOfRows = driver.findElements(By.xpath("//table[@id='memberRegionsList']/tbody/tr")); String MemberRegionName = driver.findElement(By.xpath("//table[@id='memberRegionsList']/tbody/tr[2]/td[1]")) .getText(); String memberRegionName = JMXProperties.getInstance().getProperty("region.R1.name"); assertEquals(memberRegionName, MemberRegionName); String MemberRegionType = driver.findElement(By.xpath("//table[@id='memberRegionsList']/tbody/tr[2]/td[2]")) .getText(); String memberRegionType = JMXProperties.getInstance().getProperty("region.R1.regionType"); assertEquals(memberRegionType, MemberRegionType); String MemberRegionEntryCount = driver .findElement(By.xpath("//table[@id='memberRegionsList']/tbody/tr[2]/td[3]")).getText(); String memberRegionEntryCount = JMXProperties.getInstance().getProperty("regionOnMember./R1.M1.entryCount"); assertEquals(memberRegionEntryCount, MemberRegionEntryCount); } @Test public void testDropDownList() throws InterruptedException { searchByIdAndClick("default_grid_button"); searchByIdAndClick("M1&M1"); searchByIdAndClick("memberName"); searchByLinkAndClick("M3"); searchByIdAndClick("memberName"); searchByLinkAndClick("M2"); } @Ignore("WIP") @Test public void testDataViewRegionName() throws InterruptedException { searchByLinkAndClick(DATA_VIEW_LABEL); Thread.sleep(7000); searchByIdAndClick("default_grid_button"); String regionName = driver.findElement(By.id(REGION_NAME_LABEL)).getText(); String dataviewregionname = JMXProperties.getInstance().getProperty("region.R1.name"); assertEquals(dataviewregionname, regionName); } @Ignore("WIP") @Test public void testDataViewRegionPath() { String regionPath = driver.findElement(By.id(REGION_PATH_LABEL)).getText(); String dataviewregionpath = JMXProperties.getInstance().getProperty("region.R1.fullPath"); assertEquals(dataviewregionpath, regionPath); } @Ignore("WIP") @Test public void testDataViewRegionType() { String regionType = driver.findElement(By.id(REGION_TYPE_LABEL)).getText(); String dataviewregiontype = JMXProperties.getInstance().getProperty("region.R1.regionType"); assertEquals(dataviewregiontype, regionType); } @Ignore("WIP") @Test public void testDataViewEmptyNodes() { String regionEmptyNodes = driver.findElement(By.id(DATA_VIEW_EMPTYNODES)).getText(); String dataviewEmptyNodes = JMXProperties.getInstance().getProperty("region.R1.emptyNodes"); assertEquals(dataviewEmptyNodes, regionEmptyNodes); } @Ignore("WIP") @Test public void testDataViewSystemRegionEntryCount() { String regionEntryCount = driver.findElement(By.id(DATA_VIEW_ENTRYCOUNT)).getText(); String dataviewEntryCount = JMXProperties.getInstance().getProperty("region.R1.systemRegionEntryCount"); assertEquals(dataviewEntryCount, regionEntryCount); } @Ignore("WIP") @Test public void testDataViewPersistentEnabled() { String regionPersistence = driver.findElement(By.id(REGION_PERSISTENCE_LABEL)).getText(); String dataviewregionpersistence = JMXProperties.getInstance().getProperty("region.R1.persistentEnabled"); assertEquals(dataviewregionpersistence, regionPersistence); } @Ignore("WIP") @Test public void testDataViewDiskWritesRate() { String regionWrites = driver.findElement(By.id(DATA_VIEW_WRITEPERSEC)).getText(); String dataviewRegionWrites = JMXProperties.getInstance().getProperty("region.R1.diskWritesRate"); assertEquals(dataviewRegionWrites, regionWrites); } @Ignore("WIP") @Test public void testDataViewDiskReadsRate() { String regionReads = driver.findElement(By.id(DATA_VIEW_READPERSEC)).getText(); String dataviewRegionReads = JMXProperties.getInstance().getProperty("region.R1.diskReadsRate"); assertEquals(dataviewRegionReads, regionReads); } @Ignore("WIP") @Test public void testDataViewDiskUsage() { String regionMemoryUsed = driver.findElement(By.id(DATA_VIEW_USEDMEMORY)).getText(); String dataviewMemoryUsed = JMXProperties.getInstance().getProperty("region.R1.diskUsage"); assertEquals(dataviewMemoryUsed, regionMemoryUsed); searchByLinkAndClick(QUERY_STATISTICS_LABEL); } @Ignore("WIP") @Test public void testDataViewGridValue() { String DataViewRegionName = driver.findElement(By.xpath("//*[id('6')/x:td[1]]")).getText(); String dataViewRegionName = JMXProperties.getInstance().getProperty("region.R1.name"); assertEquals(dataViewRegionName, DataViewRegionName); String DataViewRegionType = driver.findElement(By.xpath("//*[id('6')/x:td[2]")).getText(); String dataViewRegionType = JMXProperties.getInstance().getProperty("region.R2.regionType"); assertEquals(dataViewRegionType, DataViewRegionType); String DataViewEntryCount = driver.findElement(By.xpath("//*[id('6')/x:td[3]")).getText(); String dataViewEntryCount = JMXProperties.getInstance().getProperty("region.R2.systemRegionEntryCount"); assertEquals(dataViewEntryCount, DataViewEntryCount); String DataViewEntrySize = driver.findElement(By.xpath("//*[id('6')/x:td[4]")).getText(); String dataViewEntrySize = JMXProperties.getInstance().getProperty("region.R2.entrySize"); assertEquals(dataViewEntrySize, DataViewEntrySize); } public void loadDataBrowserpage() { searchByLinkAndClick(DATA_BROWSER_LABEL); //Thread.sleep(7000); } @Test public void testDataBrowserRegionName() throws InterruptedException { loadDataBrowserpage(); String DataBrowserRegionName1 = driver.findElement(By.id(DATA_BROWSER_REGIONName1)).getText(); String databrowserRegionNametemp1 = JMXProperties.getInstance().getProperty("region.R1.name"); String databrowserRegionName1 = databrowserRegionNametemp1.replaceAll("[\\/]", ""); assertEquals(databrowserRegionName1, DataBrowserRegionName1); String DataBrowserRegionName2 = driver.findElement(By.id(DATA_BROWSER_REGIONName2)).getText(); String databrowserRegionNametemp2 = JMXProperties.getInstance().getProperty("region.R2.name"); String databrowserRegionName2 = databrowserRegionNametemp2.replaceAll("[\\/]", ""); assertEquals(databrowserRegionName2, DataBrowserRegionName2); String DataBrowserRegionName3 = driver.findElement(By.id(DATA_BROWSER_REGIONName3)).getText(); String databrowserRegionNametemp3 = JMXProperties.getInstance().getProperty("region.R3.name"); String databrowserRegionName3 = databrowserRegionNametemp3.replaceAll("[\\/]", ""); assertEquals(databrowserRegionName3, DataBrowserRegionName3); } @Test public void testDataBrowserRegionMembersVerificaition() throws InterruptedException { loadDataBrowserpage(); searchByIdAndClick(DATA_BROWSER_REGION1_CHECKBOX); String DataBrowserMember1Name1 = driver.findElement(By.xpath("//label[@for='Member0']")).getText(); String DataBrowserMember1Name2 = driver.findElement(By.xpath("//label[@for='Member1']")).getText(); String DataBrowserMember1Name3 = driver.findElement(By.xpath("//label[@for='Member2']")).getText(); String databrowserMember1Names = JMXProperties.getInstance().getProperty("region.R1.members"); String databrowserMember1Names1 = databrowserMember1Names.substring(0, 2); assertEquals(databrowserMember1Names1, DataBrowserMember1Name1); String databrowserMember1Names2 = databrowserMember1Names.substring(3, 5); assertEquals(databrowserMember1Names2, DataBrowserMember1Name2); String databrowserMember1Names3 = databrowserMember1Names.substring(6, 8); assertEquals(databrowserMember1Names3, DataBrowserMember1Name3); searchByIdAndClick(DATA_BROWSER_REGION1_CHECKBOX); searchByIdAndClick(DATA_BROWSER_REGION2_CHECKBOX); String DataBrowserMember2Name1 = driver.findElement(By.xpath("//label[@for='Member0']")).getText(); String DataBrowserMember2Name2 = driver.findElement(By.xpath("//label[@for='Member1']")).getText(); String databrowserMember2Names = JMXProperties.getInstance().getProperty("region.R2.members"); String databrowserMember2Names1 = databrowserMember2Names.substring(0, 2); assertEquals(databrowserMember2Names1, DataBrowserMember2Name1); String databrowserMember2Names2 = databrowserMember2Names.substring(3, 5); assertEquals(databrowserMember2Names2, DataBrowserMember2Name2); searchByIdAndClick(DATA_BROWSER_REGION2_CHECKBOX); searchByIdAndClick(DATA_BROWSER_REGION3_CHECKBOX); String DataBrowserMember3Name1 = driver.findElement(By.xpath("//label[@for='Member0']")).getText(); String DataBrowserMember3Name2 = driver.findElement(By.xpath("//label[@for='Member1']")).getText(); String databrowserMember3Names = JMXProperties.getInstance().getProperty("region.R3.members"); String databrowserMember3Names1 = databrowserMember3Names.substring(0, 2); assertEquals(databrowserMember3Names1, DataBrowserMember3Name1); String databrowserMember3Names2 = databrowserMember3Names.substring(3, 5); assertEquals(databrowserMember3Names2, DataBrowserMember3Name2); searchByIdAndClick(DATA_BROWSER_REGION3_CHECKBOX); } @Test public void testDataBrowserColocatedRegions() throws InterruptedException { loadDataBrowserpage(); String databrowserMemberNames1 = JMXProperties.getInstance().getProperty("region.R1.members"); String databrowserMemberNames2 = JMXProperties.getInstance().getProperty("region.R2.members"); String databrowserMemberNames3 = JMXProperties.getInstance().getProperty("region.R3.members"); if ((databrowserMemberNames1.matches(databrowserMemberNames2 + "(.*)"))) { if ((databrowserMemberNames1.matches(databrowserMemberNames3 + "(.*)"))) { if ((databrowserMemberNames2.matches(databrowserMemberNames3 + "(.*)"))) { System.out.println("R1, R2 and R3 are colocated regions"); } } } searchByIdAndClick(DATA_BROWSER_REGION1_CHECKBOX); searchByLinkAndClick(DATA_BROWSER_COLOCATED_REGION); String DataBrowserColocatedRegion1 = driver.findElement(By.id(DATA_BROWSER_COLOCATED_REGION_NAME1)) .getText(); String DataBrowserColocatedRegion2 = driver.findElement(By.id(DATA_BROWSER_COLOCATED_REGION_NAME2)) .getText(); String DataBrowserColocatedRegion3 = driver.findElement(By.id(DATA_BROWSER_COLOCATED_REGION_NAME3)) .getText(); String databrowserColocatedRegiontemp1 = JMXProperties.getInstance().getProperty("region.R1.name"); String databrowserColocatedRegion1 = databrowserColocatedRegiontemp1.replaceAll("[\\/]", ""); String databrowserColocatedRegiontemp2 = JMXProperties.getInstance().getProperty("region.R2.name"); String databrowserColocatedRegion2 = databrowserColocatedRegiontemp2.replaceAll("[\\/]", ""); String databrowserColocatedRegiontemp3 = JMXProperties.getInstance().getProperty("region.R3.name"); String databrowserColocatedRegion3 = databrowserColocatedRegiontemp3.replaceAll("[\\/]", ""); assertEquals(databrowserColocatedRegion1, DataBrowserColocatedRegion1); assertEquals(databrowserColocatedRegion2, DataBrowserColocatedRegion2); assertEquals(databrowserColocatedRegion3, DataBrowserColocatedRegion3); } @Ignore("WIP") // clusterDetails element not found on Data Browser page. No assertions in test @Test public void testDataBrowserQueryValidation() throws IOException, InterruptedException { loadDataBrowserpage(); WebElement textArea = driver.findElement(By.id("dataBrowserQueryText")); textArea.sendKeys("query1"); WebElement executeButton = driver.findElement(By.id("btnExecuteQuery")); executeButton.click(); String QueryResultHeader1 = driver .findElement(By.xpath("//div[@id='clusterDetails']/div/div/span[@class='n-title']")).getText(); double count = 0, countBuffer = 0, countLine = 0; String lineNumber = ""; String filePath = "E:\\springsource\\springsourceWS\\Pulse-Cedar\\src\\main\\resources\\testQueryResultSmall.txt"; BufferedReader br; String line = ""; br = new BufferedReader(new FileReader(filePath)); while ((line = br.readLine()) != null) { countLine++; String[] words = line.split(" "); for (String word : words) { if (word.equals(QueryResultHeader1)) { count++; countBuffer++; } } } } public void testTreeMapPopUpData(String S1, String gridIcon) { for (int i = 1; i <= 3; i++) { searchByLinkAndClick(CLUSTER_VIEW_LABEL); if (gridIcon.equals(SERVER_GROUP_GRID_ID)) { WebElement ServerGroupRadio = driver.findElement(By.xpath("//label[@for='radio-servergroups']")); ServerGroupRadio.click(); } if (gridIcon.equals(REDUNDANCY_GRID_ID)) { WebElement ServerGroupRadio = driver.findElement(By.xpath("//label[@for='radio-redundancyzones']")); ServerGroupRadio.click(); } searchByIdAndClick(gridIcon); WebElement TreeMapMember = driver.findElement(By.xpath("//div[@id='" + S1 + "M" + (i) + "']/div")); Actions builder = new Actions(driver); builder.clickAndHold(TreeMapMember).perform(); int j = 1; String CPUUsageM1temp = driver .findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div/div[2]/div")).getText(); String CPUUsageM1 = CPUUsageM1temp.replaceAll("[\\%]", ""); String cpuUsageM1 = JMXProperties.getInstance().getProperty("member.M" + (i) + ".cpuUsage"); assertEquals(cpuUsageM1, CPUUsageM1); String MemoryUsageM1temp = driver .findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[" + (j + 1) + "]/div[2]/div")) .getText(); String MemoryUsageM1 = MemoryUsageM1temp.replaceAll("MB", ""); String memoryUsageM1 = JMXProperties.getInstance().getProperty("member.M" + (i) + ".UsedMemory"); assertEquals(memoryUsageM1, MemoryUsageM1); String LoadAvgM1 = driver .findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[" + (j + 2) + "]/div[2]/div")) .getText(); String loadAvgM1 = JMXProperties.getInstance().getProperty("member.M" + (i) + ".loadAverage"); assertEquals(df2.format(Double.valueOf(loadAvgM1)), LoadAvgM1); String ThreadsM1 = driver .findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[" + (j + 3) + "]/div[2]/div")) .getText(); String threadsM1 = JMXProperties.getInstance().getProperty("member.M" + (i) + ".numThreads"); assertEquals(threadsM1, ThreadsM1); String SocketsM1 = driver .findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[" + (j + 4) + "]/div[2]/div")) .getText(); String socketsM1 = JMXProperties.getInstance() .getProperty("member.M" + (i) + ".totalFileDescriptorOpen"); assertEquals(socketsM1, SocketsM1); builder.moveToElement(TreeMapMember).release().perform(); } } @Test public void testTopologyPopUpData() { testTreeMapPopUpData("", CLUSTER_VIEW_GRID_ID); } @Test public void testServerGroupTreeMapPopUpData() { testTreeMapPopUpData("SG1(!)", SERVER_GROUP_GRID_ID); } @Test public void testDataViewTreeMapPopUpData() { searchByLinkAndClick(CLUSTER_VIEW_LABEL); searchByLinkAndClick(DATA_DROPDOWN_ID); WebElement TreeMapMember = driver.findElement(By.id("GraphTreeMapClusterData-canvas")); Actions builder = new Actions(driver); builder.clickAndHold(TreeMapMember).perform(); String RegionType = driver.findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div/div[2]/div")) .getText(); String regionType = JMXProperties.getInstance().getProperty("region.R2.regionType"); assertEquals(regionType, RegionType); String EntryCount = driver.findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[2]/div[2]/div")) .getText(); String entryCount = JMXProperties.getInstance().getProperty("region.R2.systemRegionEntryCount"); assertEquals(entryCount, EntryCount); String EntrySizetemp = driver .findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[3]/div[2]/div")).getText(); float EntrySize = Float.parseFloat(EntrySizetemp); float entrySize = Float.parseFloat(JMXProperties.getInstance().getProperty("region.R2.entrySize")); entrySize = entrySize / 1024 / 1024; entrySize = Float.parseFloat(new DecimalFormat("##.####").format(entrySize)); assertEquals(entrySize, EntrySize); builder.moveToElement(TreeMapMember).release().perform(); } @Test public void testRegionViewTreeMapPopUpData() { searchByLinkAndClick(CLUSTER_VIEW_LABEL); searchByLinkAndClick(DATA_DROPDOWN_ID); WebElement TreeMapMember = driver.findElement(By.id("GraphTreeMapClusterData-canvas")); TreeMapMember.click(); } @Ignore("WIP") @Test public void testNumberOfRegions() throws InterruptedException { driver.findElement(By.xpath("//a[text()='Data Browser']")).click(); Thread.sleep(1000); List<WebElement> regionList = driver.findElements(By.xpath("//ul[@id='treeDemo']/li")); String regions = JMXProperties.getInstance().getProperty("regions"); String[] regionName = regions.split(" "); for (String string : regionName) { } //JMXProperties.getInstance().getProperty("region.R1.regionType"); int i = 1; for (WebElement webElement : regionList) { //webElement.getAttribute(arg0) i++; } driver.findElement(By.id("treeDemo_1_check")).click(); List<WebElement> memeberList = driver.findElements(By.xpath("//ul[@id='membersList']/li")); int j = 0; for (WebElement webElement : memeberList) { j++; } } @Ignore("WIP") @Test public void testDataBrowser() { driver.findElement(By.linkText("Data Browser")).click(); // WebElement dataBrowserLabel = driver.findElement(By.xpath("")); WebDriverWait wait = new WebDriverWait(driver, 20); wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//label[text()='Data Browser']")))); // Verify all elements must be displayed on data browser screen assertTrue(driver.findElement(By.xpath("//a[text()='Data Regions']")).isDisplayed()); assertTrue(driver.findElement(By.id("linkColocatedRegions")).isDisplayed()); assertTrue(driver.findElement(By.linkText("All Regions")).isDisplayed()); assertTrue(driver.findElement(By.xpath("//a[text()='Region Members']")).isDisplayed()); assertTrue(driver.findElement(By.xpath("//a[text()='Queries']")).isDisplayed()); assertTrue(driver.findElement(By.xpath("//label[text()='Query Editor']")).isDisplayed()); assertTrue(driver.findElement(By.xpath("//label[text()='Result']")).isDisplayed()); assertTrue(driver.findElement(By.xpath("//input[@value='Export Result']")).isDisplayed()); assertTrue(driver.findElement(By.id("btnExecuteQuery")).isDisplayed()); assertTrue(driver.findElement(By.xpath("//input[@value='Clear']")).isDisplayed()); assertTrue(driver.findElement(By.id("dataBrowserQueryText")).isDisplayed()); assertTrue(driver.findElement(By.id("historyIcon")).isDisplayed()); //Actual query execution driver.findElement(By.id("dataBrowserQueryText")).sendKeys("Query1"); // Assert data regions are displayed assertTrue(driver.findElement(By.id("treeDemo_1")).isDisplayed()); } }