blob: 21c14d572e2b0849661e94352dd0b160240c1bf6 [file] [log] [blame]
/*=========================================================================
* Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* one or more patents listed at http://www.pivotal.io/patents.
*=========================================================================
*/
/**
* This test class contains automated tests for Pulse application related to
* 1. Different grid data validations for example - Topology, Server Group, Redundancy Zone
* 2. Data Browser
* 3.
*
*
* @author Smita Phad
* @version 1.0
* @since 2014-04-02
*/
package com.vmware.gemfire.tools.pulse.tests;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.TimeUnit;
import java.util.TreeMap;
import junit.framework.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
class PulseBaseTests extends PulseTests {
WebElement element = null;
public static int maxWaitTime = 20;
public WebElement findElementUsingId(String id) {
return driver.findElement(By.id(id));
}
public WebElement findElementUsingXpath(String xpath) {
return driver.findElement(By.xpath(xpath));
}
public void clickElementUsingId(String id) {
findElementUsingId(id).click();
}
public void clickElementUsingXpath(String xpath) {
findElementUsingXpath(xpath).click();
}
public void enterTextUsingId(String id, String textToEnter) {
findElementUsingId(id).sendKeys(textToEnter);
}
public void enterTextUsingXpath(String xpath, String textToEnter) {
findElementUsingXpath(xpath).sendKeys(textToEnter);
}
public String getValueFromPropertiesFile(String key) {
return JMXProperties.getInstance().getProperty(key);
}
public void sendKeysUsingId(String Id, String textToEnter){
findElementById(Id).sendKeys(textToEnter);
}
public void waitForElement(WebElement element) {
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOf(element));
}
public WebElement findElementById(String id) {
return driver.findElement(By.id(id));
}
public WebElement findElementByXpath(String xpath) {
return driver.findElement(By.xpath(xpath));
}
public String getTextUsingXpath(String xpath) {
return findElementByXpath(xpath).getText();
}
public String getTextUsingId(String id) {
return findElementById(id).getText();
}
public String getPersistanceEnabled(Region r) {
String persitance = null;
if (r.getPersistentEnabled()) {
persitance = "ON";
} else if (!r.getPersistentEnabled()) {
persitance = "OFF";
}
return persitance;
}
public String getPersistanceEnabled(String trueOrFalse) {
String persitance = null;
if (trueOrFalse.contains("true")) {
persitance = "ON";
} else if (trueOrFalse.contains("false")) {
persitance = "OFF";
}
return persitance;
}
public String HeapUsage(String valueInKB) {
return null;
}
// WIP - need to work on this --
public HashMap<String, HashMap<String, Region>> getRegionDetailsFromUI(String regionName) {
String[] regionNames = JMXProperties.getInstance().getProperty("regions").split(" ");
HashMap<String, HashMap<String, Region>> regionUiMap = new HashMap<String, HashMap<String, Region>>();
for (String region : regionNames) {
HashMap<String, Region> regionMap = regionUiMap.get(region);
}
return regionUiMap;
}
public void validateServerGroupGridData() {
List<WebElement> serverGridRows = driver.findElements(By.xpath("//table[@id='memberListSG']/tbody/tr"));
int rowsCount = serverGridRows.size();
System.out.println(rowsCount);
String[][] gridDataFromUI = new String[rowsCount][7];
for (int j = 2, x = 0; j <= serverGridRows.size(); j++, x++) {
for (int i = 0; i <= 6; i++) {
gridDataFromUI[x][i] = driver.findElement(
By.xpath("//table[@id='memberListSG']/tbody/tr[" + j + "]/td[" + (i + 1) + "]")).getText();
}
}
String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
HashMap<String, HashMap<String, Member>> sgMap = new HashMap<String, HashMap<String, Member>>();
for (String member : memberNames) {
Member thisMember = new Member(member);
String[] sgs = thisMember.getGroups();
for (String sgName : sgs) {
HashMap<String, Member> sgMembers = sgMap.get(sgName);
if (sgMembers == null) {
sgMembers = new HashMap<String, Member>();
sgMap.put(sgName, sgMembers);
}
sgMembers.put(thisMember.getMember(), thisMember);
}
}
for (int i = 0; i < gridDataFromUI.length - 1; i++) {
String sgName = gridDataFromUI[i][0];
String memName = gridDataFromUI[i][1];
Member m = sgMap.get(sgName).get(memName);
Assert.assertEquals(sgName, gridDataFromUI[i][0]);
Assert.assertEquals(memName, gridDataFromUI[i][1]);
Assert.assertEquals(m.getMember(), gridDataFromUI[i][2]);
Assert.assertEquals(m.getHost(), gridDataFromUI[i][3]);
String cupUsage = String.valueOf(m.getCpuUsage());
Assert.assertEquals(cupUsage, gridDataFromUI[i][5]);
}
}
public void validateRedundancyZonesGridData() {
List<WebElement> rzGridRows = driver.findElements(By.xpath("//table[@id='memberListRZ']/tbody/tr"));
int rowsCount = rzGridRows.size();
System.out.println(rowsCount);
String[][] gridDataFromUI = new String[rowsCount][7];
for (int j = 2, x = 0; j <= rzGridRows.size(); j++, x++) {
for (int i = 0; i <= 6; i++) {
gridDataFromUI[x][i] = driver.findElement(
By.xpath("//table[@id='memberListRZ']/tbody/tr[" + j + "]/td[" + (i + 1) + "]")).getText();
}
}
String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
HashMap<String, HashMap<String, Member>> rzMap = new HashMap<String, HashMap<String, Member>>();
for (String member : memberNames) {
Member thisMember = new Member(member);
//String[] rz = thisMember.getRedundancyZone();
String sgName = thisMember.getRedundancyZone();
//for (String sgName : rz) {
HashMap<String, Member> rzMembers = rzMap.get(sgName);
if (rzMembers == null) {
rzMembers = new HashMap<String, Member>();
rzMap.put(sgName, rzMembers);
}
rzMembers.put(thisMember.getMember(), thisMember);
//}
}
for (int i = 0; i < gridDataFromUI.length - 1; i++) {
String sgName = gridDataFromUI[i][0];
String memName = gridDataFromUI[i][1];
Member m = rzMap.get(sgName).get(memName);
Assert.assertEquals(sgName, gridDataFromUI[i][0]);
Assert.assertEquals(memName, gridDataFromUI[i][1]);
Assert.assertEquals(m.getMember(), gridDataFromUI[i][2]);
Assert.assertEquals(m.getHost(), gridDataFromUI[i][3]);
String cupUsage = String.valueOf(m.getCpuUsage());
Assert.assertEquals(cupUsage, gridDataFromUI[i][5]);
}
}
public void validateTopologyGridData() {
List<WebElement> rzGridRows = driver.findElements(By.xpath("//table[@id='memberList']/tbody/tr"));
int rowsCount = rzGridRows.size();
System.out.println(rowsCount);
String[][] gridDataFromUI = new String[rowsCount][7];
for (int j = 2, x = 0; j <= rzGridRows.size(); j++, x++) {
for (int i = 0; i <= 6; i++) {
gridDataFromUI[x][i] = driver.findElement(
By.xpath("//table[@id='memberList']/tbody/tr[" + j + "]/td[" + (i + 1) + "]")).getText();
}
}
String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
HashMap<String, Member> tpMap = new HashMap<String, Member>();
for (String member : memberNames) {
Member thisMember = new Member(member);
tpMap.put(thisMember.getMember(), thisMember);
}
for (int i = 0; i < gridDataFromUI.length - 1; i++) {
String memName = gridDataFromUI[i][0];
Member m = tpMap.get(memName);
Assert.assertEquals(m.getMember(), gridDataFromUI[i][0]);
Assert.assertEquals(m.getMember(), gridDataFromUI[i][1]);
Assert.assertEquals(m.getHost(), gridDataFromUI[i][2]);
String cupUsage = String.valueOf(m.getCpuUsage());
Assert.assertEquals(cupUsage, gridDataFromUI[i][4]);
}
}
public void validateDataPrespectiveGridData() {
List<WebElement> serverGridRows = driver.findElements(By.xpath("//table[@id='regionsList']/tbody/tr"));
int rowsCount = serverGridRows.size();
System.out.println(rowsCount);
String[][] gridDataFromUI = new String[rowsCount][7];
for (int j = 2, x = 0; j <= serverGridRows.size(); j++, x++) {
for (int i = 0; i <= 6; i++) {
if (i < 5) {
gridDataFromUI[x][i] = driver.findElement(
By.xpath("//table[@id='regionsList']/tbody/tr[" + j + "]/td[" + (i + 1) + "]")).getText();
} else if (i == 5) {
gridDataFromUI[x][i] = driver.findElement(
By.xpath("//table[@id='regionsList']/tbody/tr[" + j + "]/td[" + (i + 4) + "]")).getText();
}
}
}
String[] regionNames = JMXProperties.getInstance().getProperty("regions").split(" ");
HashMap<String, Region> dataMap = new HashMap<String, Region>();
for (String region : regionNames) {
Region thisRegion = new Region(region);
dataMap.put(thisRegion.getName(), thisRegion);
}
for (int i = 0; i < gridDataFromUI.length - 1; i++) {
String memName = gridDataFromUI[i][0];
Region r = dataMap.get(memName);
Assert.assertEquals(r.getName(), gridDataFromUI[i][0]);
Assert.assertEquals(r.getRegionType(), gridDataFromUI[i][1]);
Assert.assertEquals(String.valueOf(r.getSystemRegionEntryCount()), gridDataFromUI[i][2]);
Assert.assertEquals(r.getFullPath(), gridDataFromUI[i][4]);
Assert.assertEquals(getPersistanceEnabled(r), gridDataFromUI[i][5]);
}
}
public void validateRegionDetailsGridData() {
List<WebElement> serverGridRows = driver.findElements(By.xpath("//table[@id='memberList']/tbody/tr"));
int rowsCount = serverGridRows.size();
System.out.println(rowsCount);
String[][] gridDataFromUI = new String[rowsCount][7];
for (int j = 2, x = 0; j <= serverGridRows.size(); j++, x++) {
for (int i = 0; i < 2; i++) {
gridDataFromUI[x][i] = driver.findElement(
By.xpath("//table[@id='memberList']/tbody/tr[" + j + "]/td[" + (i + 1) + "]")).getText();
}
}
String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
HashMap<String, Member> tpMap = new HashMap<String, Member>();
for (String member : memberNames) {
Member thisMember = new Member(member);
tpMap.put(thisMember.getMember(), thisMember);
}
for (int i = 0; i < gridDataFromUI.length - 1; i++) {
String memName = gridDataFromUI[i][0];
Member m = tpMap.get(memName);
Assert.assertEquals(m.getMember(), gridDataFromUI[i][0]);
}
}
public void navigateToToplogyView(){
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.TopologyView.radioButtonXpath);
}
public void navigateToServerGroupGView(){
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.ServerGroups.radioButtonXpath);
}
public void navigateToRedundancyZoneView(){
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.RedundancyZone.radioButtonXpath);
}
// ------ Topology / Server Group / Redundancy Group - Tree View
public void navigateToTopologyTreeView(){
navigateToToplogyView();
clickElementUsingId(PulseTestLocators.TopologyView.treeMapButtonId);
}
public void navigateToServerGroupTreeView() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.ServerGroups.radioButtonXpath);
}
public void navigateToRedundancyZonesTreeView() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.RedundancyZone.radioButtonXpath);
}
// ------ Topology / Server Group / Redundancy Group - Grid View
public void navigateToTopologyGridView() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.TopologyView.radioButtonXpath);
clickElementUsingId(PulseTestLocators.TopologyView.gridButtonId);
}
public void navigateToServerGroupGridView() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.ServerGroups.radioButtonXpath);
clickElementUsingId(PulseTestLocators.ServerGroups.gridButtonId);
}
public void navigateToRedundancyZonesGridView() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.RedundancyZone.radioButtonXpath);
clickElementUsingId(PulseTestLocators.RedundancyZone.gridButtonId);
}
// ----- Data perspective / region details
public void navigateToDataPrespectiveGridView() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.DataPerspectiveView.downarrowButtonXpath);
clickElementUsingXpath(PulseTestLocators.DataPerspectiveView.dataViewButtonXpath);
clickElementUsingId(PulseTestLocators.DataPerspectiveView.gridButtonId);
}
public void navigateToRegionDetailsView() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.DataPerspectiveView.downarrowButtonXpath);
clickElementUsingXpath(PulseTestLocators.DataPerspectiveView.dataViewButtonXpath);
// clickElementUsingXpath(PulseTestLocators.RegionDetailsView.regionNameXpath);
// // WIP - region navigation defect needs to fixed
clickElementUsingXpath(PulseTestLocators.RegionDetailsView.treeMapCanvasXpath);
}
public void navigateToRegionDetailsGridView() {
navigateToRegionDetailsView();
clickElementUsingXpath(PulseTestLocators.RegionDetailsView.gridButtonXpath);
}
public String getPropertyValue(String propertyKey) {
String propertyValue = JMXProperties.getInstance().getProperty(propertyKey);
return propertyValue;
}
public void verifyElementPresentById(String id) {
WebDriverWait wait = (WebDriverWait) new WebDriverWait(driver, maxWaitTime, 500);
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.id(id)));
}
public void verifyElementPresentByLinkText(String lnkText) {
WebDriverWait wait = (WebDriverWait) new WebDriverWait(driver, maxWaitTime, 500);
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.linkText(lnkText)));
}
public void verifyElementPresentByXpath(String xpath) {
WebDriverWait wait = (WebDriverWait) new WebDriverWait(driver, maxWaitTime, 500);
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath(xpath)));
}
public void verifyTextPresrntById(String id, String text) {
WebDriverWait wait = (WebDriverWait) new WebDriverWait(driver, maxWaitTime, 500);
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.id(id), text));
}
public void verifyTextPresrntByXpath(String xpath, String text) {
WebDriverWait wait = (WebDriverWait) new WebDriverWait(driver, maxWaitTime, 500);
wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath(xpath), text));
}
public void verifyElementAttributeById(String id, String attribute, String value) {
String actualValue = findElementById(id).getAttribute(attribute);
System.out.println(value);
System.out.println(actualValue);
Assert.assertTrue(actualValue.equals(value) || actualValue.contains(value));
}
public void mouseReleaseById(String id){
verifyElementPresentById(id);
Actions action = new Actions(driver);
WebElement we = driver.findElement(By.id(id));
action.moveToElement(we).release().perform();
System.out.println("testing");
}
public void mouseClickAndHoldOverElementById(String id) {
verifyElementPresentById(id);
Actions action = new Actions(driver);
WebElement we = driver.findElement(By.id(id));
action.moveToElement(we).clickAndHold().perform();
}
public void mouseOverElementByXpath(String xpath) {
Actions action = new Actions(driver);
WebElement we = driver.findElement(By.xpath(xpath));
action.moveToElement(we).build().perform();
}
public float stringToFloat(String stringValue){
float floatNum = Float.parseFloat(stringValue);
return floatNum;
}
public String floatToString(float floatValue){
String stringValue = Float.toString(floatValue);
return stringValue;
}
public String[] splitString(String stringToSplit, String splitDelimiter){
String [] stringArray = stringToSplit.split(splitDelimiter);
return stringArray;
}
public void assertMemberSortingByCpuUsage(){
Map<Float, String> memberMap = new TreeMap<Float,String>(Collections.reverseOrder());
String [] membersNames = splitString(JMXProperties.getInstance().getProperty("members"), " ");
for (String member : membersNames) {
Member thisMember = new Member(member);
memberMap.put(thisMember.getCpuUsage(), thisMember.getMember());
}
for(Map.Entry<Float,String> entry : memberMap.entrySet()) {
//here matching painting style to validation that the members are painted according to their cpu usage
String refMemberCPUUsage = null;
if(entry.getValue().equalsIgnoreCase("M1")){
refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM1;
}else if(entry.getValue().equalsIgnoreCase("M2")){
refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM2;
}else{
refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM3;
}
Assert.assertTrue(findElementById(entry.getValue()).getAttribute("style").contains(refMemberCPUUsage));
}
}
public void assertMemberSortingByHeapUsage(){
Map<Long, String> memberMap = new TreeMap<Long,String>(Collections.reverseOrder());
String [] membersNames = splitString(JMXProperties.getInstance().getProperty("members"), " ");
for (String member : membersNames) {
Member thisMember = new Member(member);
memberMap.put(thisMember.getCurrentHeapSize(), thisMember.getMember());
}
for(Entry<Long, String> entry : memberMap.entrySet()) {
//here matching painting style to validation that the members are painted according to their cpu usage
String refMemberCPUUsage = null;
if(entry.getValue().equalsIgnoreCase("M1")){
refMemberCPUUsage = PulseTestData.Topology.heapUsagePaintStyleM1;
}else if(entry.getValue().equalsIgnoreCase("M2")){
refMemberCPUUsage = PulseTestData.Topology.heapUsagePaintStyleM2;
}else{
refMemberCPUUsage = PulseTestData.Topology.heapUsagePaintStyleM3;
}
Assert.assertTrue(findElementById(entry.getValue()).getAttribute("style").contains(refMemberCPUUsage));
}
}
public void assertMemberSortingBySGCpuUsage(){
Map<Float, String> memberMap = new TreeMap<Float,String>(Collections.reverseOrder());
String [] membersNames = splitString(JMXProperties.getInstance().getProperty("members"), " ");
for (String member : membersNames) {
Member thisMember = new Member(member);
memberMap.put(thisMember.getCpuUsage(), thisMember.getMember());
}
for(Map.Entry<Float,String> entry : memberMap.entrySet()) {
//here matching painting style to validation that the members are painted according to their cpu usage
String refMemberCPUUsage = null;
if(entry.getValue().equalsIgnoreCase("M1")){
refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM1;
}else if(entry.getValue().equalsIgnoreCase("M2")){
refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM2;
}else{
refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM3;
}
Assert.assertTrue(findElementById(entry.getValue()).getAttribute("style").contains(refMemberCPUUsage));
}
}
public void assertMemeberSortingBySgHeapUsage(){
String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
HashMap<String, HashMap<String, Member>> sgMap = new HashMap<String, HashMap<String, Member>>();
for (String member : memberNames) {
Member thisMember = new Member(member);
String[] sgs = thisMember.getGroups();
for (String sgName : sgs) {
HashMap<String, Member> sgMembers = sgMap.get(sgName);
if (sgMembers == null) {
sgMembers = new HashMap<String, Member>();
sgMap.put(sgName, sgMembers);
}
sgMembers.put(thisMember.getMember(), thisMember);
}
}
Map<Float, String> memberMap = new TreeMap<Float,String>(Collections.reverseOrder());
for(int sgId=1; sgId<=3; sgId++){
String sgName = "SG1";
String memName = "M" + sgId;
Member m = sgMap.get(sgName).get(memName);
memberMap.put((float) m.getCurrentHeapSize(), m.getMember());
}
for(Map.Entry<Float,String> entry : memberMap.entrySet()) {
//here matching painting style to validation that the members are painted according to their cpu usage
String refMemberCPUUsage = null;
if(entry.getValue().equalsIgnoreCase("M1")){
refMemberCPUUsage = PulseTestData.ServerGroups.heapUsagePaintStyleSG1M1;
}else if(entry.getValue().equalsIgnoreCase("M2")){
refMemberCPUUsage = PulseTestData.ServerGroups.heapUsagePaintStyleSG1M2;
}else{
refMemberCPUUsage = PulseTestData.ServerGroups.heapUsagePaintStyleSG1M3;
}
Assert.assertTrue(findElementById("SG1(!)"+entry.getValue()).getAttribute("style").contains(refMemberCPUUsage));
}
}
public void assertMemeberSortingBySgCpuUsage(){
String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
HashMap<String, HashMap<String, Member>> sgMap = new HashMap<String, HashMap<String, Member>>();
for (String member : memberNames) {
Member thisMember = new Member(member);
String[] sgs = thisMember.getGroups();
for (String sgName : sgs) {
HashMap<String, Member> sgMembers = sgMap.get(sgName);
if (sgMembers == null) {
sgMembers = new HashMap<String, Member>();
sgMap.put(sgName, sgMembers);
}
sgMembers.put(thisMember.getMember(), thisMember);
}
}
Map<Float, String> memberMap = new TreeMap<Float,String>(Collections.reverseOrder());
//SG3(!)M3
for(int sgId=1; sgId<=3; sgId++){
String sgName = "SG1";
String memName = "M" + sgId;
Member m = sgMap.get(sgName).get(memName);
memberMap.put(m.getCpuUsage(), m.getMember());
}
for(Map.Entry<Float,String> entry : memberMap.entrySet()) {
//here matching painting style to validation that the members are painted according to their cpu usage
String refMemberCPUUsage = null;
if(entry.getValue().equalsIgnoreCase("M1")){
refMemberCPUUsage = PulseTestData.ServerGroups.cpuUsagePaintStyleSG1M1;
}else if(entry.getValue().equalsIgnoreCase("M2")){
refMemberCPUUsage = PulseTestData.ServerGroups.cpuUsagePaintStyleSG1M2;
}else{
refMemberCPUUsage = PulseTestData.ServerGroups.cpuUsagePaintStyleSG1M3;
}
Assert.assertTrue(findElementById("SG1(!)"+entry.getValue()).getAttribute("style").contains(refMemberCPUUsage));
}
}
public void assertMemeberSortingByRzHeapUsage(){
String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
HashMap<String, HashMap<String, Member>> rzMap = new HashMap<String, HashMap<String, Member>>();
for (String member : memberNames) {
Member thisMember = new Member(member);
String sgName = thisMember.getRedundancyZone();
HashMap<String, Member> rzMembers = rzMap.get(sgName);
if (rzMembers == null) {
rzMembers = new HashMap<String, Member>();
rzMap.put(sgName, rzMembers);
}
rzMembers.put(thisMember.getMember(), thisMember);
}
Map<Float, String> memberMap = new TreeMap<Float,String>(Collections.reverseOrder());
String rzName = "RZ1 RZ2";
String memName = "M1" ;
Member m = rzMap.get(rzName).get(memName);
memberMap.put((float) m.getCurrentHeapSize(), m.getMember());
for(Map.Entry<Float,String> entry : memberMap.entrySet()) {
//here matching painting style to validation that the members are painted according to their cpu usage
String refMemberCPUUsage = null;
if(entry.getValue().equalsIgnoreCase("M1")){
refMemberCPUUsage = PulseTestData.RedundancyZone.heapUsagePaintStyleRZ1RZ2M1;
}else if(entry.getValue().equalsIgnoreCase("M2")){
refMemberCPUUsage = PulseTestData.RedundancyZone.heapUsagePaintStyleRZ1RZ2M2;
}else{
refMemberCPUUsage = PulseTestData.RedundancyZone.heapUsagePaintStyleRZ3M3;
}
Assert.assertTrue(findElementById("RZ1 RZ2(!)"+entry.getValue()).getAttribute("style").contains(refMemberCPUUsage));
}
}
public void assertMemeberSortingByRzCpuUsage(){
String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
HashMap<String, HashMap<String, Member>> rzMap = new HashMap<String, HashMap<String, Member>>();
for (String member : memberNames) {
Member thisMember = new Member(member);
String sgName = thisMember.getRedundancyZone();
HashMap<String, Member> rzMembers = rzMap.get(sgName);
if (rzMembers == null) {
rzMembers = new HashMap<String, Member>();
rzMap.put(sgName, rzMembers);
}
rzMembers.put(thisMember.getMember(), thisMember);
}
Map<Float, String> memberMap = new TreeMap<Float,String>(Collections.reverseOrder());
String rzName = "RZ1 RZ2";
String memName = "M1" ;
Member m = rzMap.get(rzName).get(memName);
memberMap.put(m.getCpuUsage(), m.getMember());
for(Map.Entry<Float,String> entry : memberMap.entrySet()) {
//here matching painting style to validation that the members are painted according to their cpu usage
String refMemberCPUUsage = null;
if(entry.getValue().equalsIgnoreCase("M1")){
refMemberCPUUsage = PulseTestData.RedundancyZone.cpuUsagePaintStyleRZ1RZ2M1;
}else if(entry.getValue().equalsIgnoreCase("M2")){
refMemberCPUUsage = PulseTestData.RedundancyZone.cpuUsagePaintStyleRZ1RZ2M2;
}
Assert.assertTrue(findElementById("RZ1 RZ2(!)"+entry.getValue()).getAttribute("style").contains(refMemberCPUUsage));
}
}
public List<WebElement> getRegionsFromDataBrowser(){
List<WebElement> regionList = driver.findElements(By.xpath("//span[starts-with(@ID,'treeDemo_')][contains(@id,'_span')]"));
return regionList;
}
}
public class PulseAutomatedTests extends PulseBaseTests {
@Test
public void serverGroupGridDataValidation() {
navigateToServerGroupGridView();
validateServerGroupGridData();
}
@Test
public void redundancyZonesGridDataValidation() {
navigateToRedundancyZonesGridView();
validateRedundancyZonesGridData();
}
@Test
public void topologyGridDataValidation() {
navigateToTopologyGridView();
validateTopologyGridData();
}
@Test
public void dataViewGridDataValidation() {
navigateToDataPrespectiveGridView();
validateDataPrespectiveGridData();
}
@Test
public void regionDetailsGridDataValidation() {
navigateToRegionDetailsGridView();
validateRegionDetailsGridData();
}
@Test
public void regionDetailsNavigationTest() {
navigateToRegionDetailsView();
Assert.assertEquals("/R2", getTextUsingId(PulseTestLocators.RegionDetailsView.regionNameDivId));
}
@Test
public void regionName() {
navigateToRegionDetailsView();
Assert.assertEquals(getPropertyValue("region.R2.name"), getTextUsingId(PulseTestLocators.RegionDetailsView.regionNameDivId));
}
@Test
public void regionPath() {
navigateToRegionDetailsView();
Assert.assertEquals(getPropertyValue("region.R2.fullPath"),
getTextUsingId(PulseTestLocators.RegionDetailsView.regionPathId));
}
@Test
public void regionType() {
navigateToRegionDetailsView();
Assert.assertEquals(getPropertyValue("region.R2.regionType"),
getTextUsingId(PulseTestLocators.RegionDetailsView.regionTypeId));
}
@Test
public void regionMembers() {
navigateToRegionDetailsView();
Assert.assertEquals(getPropertyValue("region.R2.memberCount"),
getTextUsingId(PulseTestLocators.RegionDetailsView.regionMembersTextId));
}
@Test
public void regionEmptyNodes() {
navigateToRegionDetailsView();
Assert.assertEquals(getPropertyValue("region.R2.emptyNodes"),
getTextUsingId(PulseTestLocators.RegionDetailsView.regionEmptyNodesId));
}
@Test
public void regionEntryCount() {
navigateToRegionDetailsView();
Assert.assertEquals(getPropertyValue("region.R2.systemRegionEntryCount"),
getTextUsingId(PulseTestLocators.RegionDetailsView.regionEntryCountTextId));
}
@Test
public void regionDiskUsage() {
navigateToRegionDetailsView();
Assert.assertEquals(getPropertyValue("region.R2.diskUsage"),
getTextUsingId(PulseTestLocators.RegionDetailsView.regionDiskUsageId));
}
@Test
public void regionPersistence() {
navigateToRegionDetailsView();
Assert.assertEquals(getPersistanceEnabled(getPropertyValue("region.R2.persistentEnabled")),
getTextUsingId(PulseTestLocators.RegionDetailsView.regionPersistenceId));
}
@Ignore("WIP")
@Test
public void regionMemoryUsage() {
navigateToRegionDetailsView();
// need to check the respective property values
}
@Test
public void regionInMemoryRead() {
navigateToRegionDetailsView();
Assert.assertEquals(getPropertyValue("region.R2.getsRate"),
getTextUsingId(PulseTestLocators.RegionDetailsView.inMemoryReadsId));
}
@Test
public void regionInMemoryWrites() {
navigateToRegionDetailsView();
Assert.assertEquals(getPropertyValue("region.R2.putsRate"),
getTextUsingId(PulseTestLocators.RegionDetailsView.inMemoryWritesId));
}
@Test
public void regionDiskRead() {
navigateToRegionDetailsView();
Assert.assertEquals(getPropertyValue("region.R2.diskReadsRate"),
getTextUsingId(PulseTestLocators.RegionDetailsView.diskReadsId));
}
@Test
public void regionDiskWrites() {
navigateToRegionDetailsView();
Assert.assertEquals(getPropertyValue("region.R2.diskWritesRate"),
getTextUsingId(PulseTestLocators.RegionDetailsView.diskWritesId));
}
@Test
public void clickHostShowsMemberTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.nodeH1Id);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM1Id);
clickElementUsingId(PulseTestLocators.TopologyView.nodeH2Id);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM2Id);
clickElementUsingId(PulseTestLocators.TopologyView.nodeH3Id);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM3Id);
}
@Test
public void verifyHostTooltipsOfTopologyGraphTest() {
for (int i = 1; i <=3; i++) {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
mouseClickAndHoldOverElementById("h" + i);
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.hostNameTTXpath, getPropertyValue("member.M" + i + ".host"));
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.cpuUsageTTXpath, "0%");
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.memoryUsageTTXpath, getPropertyValue("member.M" + i
+ ".currentHeapSize"));
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.loadAvgTTXpath, getPropertyValue("member.M" + i
+ ".loadAverage"));
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.soketsTTXpath, getPropertyValue("member.M" + i
+ ".totalFileDescriptorOpen"));
mouseReleaseById("h" + i);
driver.navigate().refresh();
}
}
@Ignore("Issues with member tooltip xpath")
@Test
public void verifyMemberTooltipsOfTopologyGraphTest() {
verifyElementPresentById(PulseTestLocators.TopologyView.nodeH1Id);
clickElementUsingId(PulseTestLocators.TopologyView.nodeH1Id);
mouseClickAndHoldOverElementById(PulseTestLocators.TopologyView.memberM1Id);
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.memNameTTXpath, getPropertyValue("member.M1.member"));
//verifyTextPresrntByXpath(PulseTestLocators.TopologyView.memCpuUsageTTXpath, getPropertyValue("member.M1.cpuUsage") + "%");
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.jvmPausesTTXpath, getPropertyValue("member.M1.JVMPauses"));
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.regionsTTXpath, getPropertyValue("member.M1.totalRegionCount"));
verifyElementPresentById(PulseTestLocators.TopologyView.nodeH2Id);
clickElementUsingId(PulseTestLocators.TopologyView.nodeH2Id);
mouseClickAndHoldOverElementById(PulseTestLocators.TopologyView.memberM2Id);
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.memNameTTXpath, getPropertyValue("member.M2.member"));
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.memCpuUsageTTXpath, getPropertyValue("member.M2.cpuUsage") + "%");
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.jvmPausesTTXpath, getPropertyValue("member.M2.JVMPauses"));
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.regionsTTXpath, getPropertyValue("member.M2.totalRegionCount"));
verifyElementPresentById(PulseTestLocators.TopologyView.nodeH3Id);
clickElementUsingId(PulseTestLocators.TopologyView.nodeH3Id);
mouseClickAndHoldOverElementById(PulseTestLocators.TopologyView.memberM3Id);
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.memNameTTXpath, getPropertyValue("member.M3.member"));
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.memCpuUsageTTXpath, getPropertyValue("member.M3.cpuUsage") + "%");
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.jvmPausesTTXpath, getPropertyValue("member.M3.JVMPauses"));
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.regionsTTXpath, getPropertyValue("member.M3.totalRegionCount"));
}
@Test
public void VerifyRGraphTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
verifyElementPresentById(PulseTestLocators.TopologyView.nodeH1Id);
verifyElementPresentById(PulseTestLocators.TopologyView.nodeH2Id);
verifyElementPresentById(PulseTestLocators.TopologyView.nodeH3Id);
}
@Test
public void clickMembersOfTopologyGraphTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.nodeH1Id);
clickElementUsingId(PulseTestLocators.TopologyView.memberM1Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M1");
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.nodeH2Id);
clickElementUsingId(PulseTestLocators.TopologyView.memberM2Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M2");
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.nodeH3Id);
clickElementUsingId(PulseTestLocators.TopologyView.memberM3Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M3");
}
@Test
public void clickTreeMapViewShowingTreeMapTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.treeMapButtonId);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM1Id);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM2Id);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM3Id);
}
@Test
public void verifyMembersPresentInTreeMapTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.treeMapButtonId);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM1Id);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM2Id);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM3Id);
verifyTextPresrntById(PulseTestLocators.TopologyView.memberM1Id, "M1");
verifyTextPresrntById(PulseTestLocators.TopologyView.memberM2Id, "M2");
verifyTextPresrntById(PulseTestLocators.TopologyView.memberM3Id, "M3");
}
@Test
public void clickMemberNavigatingToCorrespondingRegionTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.treeMapButtonId);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM1Id);
verifyTextPresrntById(PulseTestLocators.TopologyView.memberM1Id, "M1");
clickElementUsingId(PulseTestLocators.TopologyView.memberM1Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M1");
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.treeMapButtonId);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM2Id);
verifyTextPresrntById(PulseTestLocators.TopologyView.memberM2Id, "M2");
clickElementUsingId(PulseTestLocators.TopologyView.memberM2Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M2");
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.treeMapButtonId);
verifyElementPresentById(PulseTestLocators.TopologyView.memberM3Id);
verifyTextPresrntById(PulseTestLocators.TopologyView.memberM3Id, "M3");
clickElementUsingId(PulseTestLocators.TopologyView.memberM3Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M3");
}
@Test
public void clickGridButtonShowsGridTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.gridButtonId);
verifyElementPresentByXpath(PulseTestLocators.TopologyView.idM1Xpath);
verifyElementPresentByXpath(PulseTestLocators.TopologyView.nameM1Xpath);
verifyElementPresentByXpath(PulseTestLocators.TopologyView.hostH1Xpath);
verifyElementPresentByXpath(PulseTestLocators.TopologyView.idM2Xpath);
verifyElementPresentByXpath(PulseTestLocators.TopologyView.nameM2Xpath);
verifyElementPresentByXpath(PulseTestLocators.TopologyView.hostH2Xpath);
verifyElementPresentByXpath(PulseTestLocators.TopologyView.idM3Xpath);
verifyElementPresentByXpath(PulseTestLocators.TopologyView.nameM3Xpath);
verifyElementPresentByXpath(PulseTestLocators.TopologyView.hostH3Xpath);
}
@Test
public void verifyMembersPresentInGridTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.gridButtonId);
verifyElementPresentByXpath(PulseTestLocators.TopologyView.nameM1Xpath);
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.nameM1Xpath, "M1");
verifyElementPresentByXpath(PulseTestLocators.TopologyView.nameM2Xpath);
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.nameM2Xpath, "M2");
verifyElementPresentByXpath(PulseTestLocators.TopologyView.nameM3Xpath);
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.nameM3Xpath, "M3");
}
@Test
public void verifyHostNamesInGridTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.gridButtonId);
verifyElementPresentByXpath(PulseTestLocators.TopologyView.hostH1Xpath);
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.hostH1Xpath, "h1");
verifyElementPresentByXpath(PulseTestLocators.TopologyView.hostH2Xpath);
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.hostH2Xpath, "h2");
verifyElementPresentByXpath(PulseTestLocators.TopologyView.hostH3Xpath);
verifyTextPresrntByXpath(PulseTestLocators.TopologyView.hostH3Xpath, "h3");
}
@Test
public void clickOnGridMemNameNavigatingToCorrespondingRegionTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.gridButtonId);
clickElementUsingXpath(PulseTestLocators.TopologyView.nameM1Xpath);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M1");
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.gridButtonId);
clickElementUsingXpath(PulseTestLocators.TopologyView.nameM2Xpath);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M2");
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.gridButtonId);
clickElementUsingXpath(PulseTestLocators.TopologyView.nameM3Xpath);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M3");
}
@Test
public void verifyMembersPresentInSvrGrpTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.ServerGroups.serverGrpsRadioXpath);
verifyElementPresentById(PulseTestLocators.ServerGroups.serverGrp1Id);
verifyElementPresentById(PulseTestLocators.ServerGroups.serverGrp2Id);
verifyElementPresentById(PulseTestLocators.ServerGroups.serverGrp3Id);
verifyElementPresentById(PulseTestLocators.ServerGroups.sg1M1Id);
verifyElementPresentById(PulseTestLocators.ServerGroups.sg1M2Id);
verifyElementPresentById(PulseTestLocators.ServerGroups.sg1M3Id);
verifyElementPresentById(PulseTestLocators.ServerGroups.sg2M1Id);
verifyElementPresentById(PulseTestLocators.ServerGroups.sg2M2Id);
verifyElementPresentById(PulseTestLocators.ServerGroups.sg3M3Id);
}
@Test
public void expandAndCloseServerGroupsTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
//waitForElement(findElementByXpath(PulseTestLocators.ServerGroups.serverGrpsRadioXpath));
clickElementUsingXpath(PulseTestLocators.ServerGroups.serverGrpsRadioXpath);
clickElementUsingXpath(PulseTestLocators.ServerGroups.serverGrp1Xpath);
verifyElementAttributeById(PulseTestLocators.ServerGroups.serverGrp1Id, "style", "width: 720px; height: 415px;");
clickElementUsingXpath(PulseTestLocators.ServerGroups.serverGrp1Xpath);
verifyElementAttributeById(PulseTestLocators.ServerGroups.serverGrp1Id, "style", "width: 239.667px; height: 399px;");
clickElementUsingXpath(PulseTestLocators.ServerGroups.serverGrp2Xpath);
verifyElementAttributeById(PulseTestLocators.ServerGroups.serverGrp2Id, "style", "width: 720px; height: 415px;");
clickElementUsingXpath(PulseTestLocators.ServerGroups.serverGrp2Xpath);
verifyElementAttributeById(PulseTestLocators.ServerGroups.serverGrp2Id, "style", "width: 239.667px; height: 399px;");
clickElementUsingXpath(PulseTestLocators.ServerGroups.serverGrp3Xpath);
verifyElementAttributeById(PulseTestLocators.ServerGroups.serverGrp3Id, "style", "width: 720px; height: 415px;");
clickElementUsingXpath(PulseTestLocators.ServerGroups.serverGrp3Xpath);
verifyElementAttributeById(PulseTestLocators.ServerGroups.serverGrp3Id, "style", "width: 239.667px; height: 399px;");
}
@Test
public void verifyMembersInServGrpTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.ServerGroups.serverGrpsRadioXpath);
verifyTextPresrntById(PulseTestLocators.ServerGroups.serverGrp1Id, "SG1");
verifyTextPresrntById(PulseTestLocators.ServerGroups.serverGrp2Id, "SG2");
verifyTextPresrntById(PulseTestLocators.ServerGroups.serverGrp3Id, "SG3");
verifyTextPresrntById(PulseTestLocators.ServerGroups.sg1M1Id, "M1");
verifyTextPresrntById(PulseTestLocators.ServerGroups.sg1M2Id, "M2");
verifyTextPresrntById(PulseTestLocators.ServerGroups.sg1M3Id, "M3");
verifyTextPresrntById(PulseTestLocators.ServerGroups.sg2M1Id, "M1");
verifyTextPresrntById(PulseTestLocators.ServerGroups.sg2M2Id, "M2");
verifyTextPresrntById(PulseTestLocators.ServerGroups.sg3M3Id, "M3");
}
@Test
public void memberNavigationFromServGrpTest() {
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingXpath(PulseTestLocators.ServerGroups.serverGrpsRadioXpath);
clickElementUsingId(PulseTestLocators.ServerGroups.sg1M1Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M1");
navigateToServerGroupTreeView();
clickElementUsingId(PulseTestLocators.ServerGroups.sg1M2Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M2");
navigateToServerGroupTreeView();
clickElementUsingId(PulseTestLocators.ServerGroups.sg1M3Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M3");
navigateToServerGroupTreeView();
clickElementUsingId(PulseTestLocators.ServerGroups.sg2M1Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M1");
navigateToServerGroupTreeView();
clickElementUsingId(PulseTestLocators.ServerGroups.sg2M2Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M2");
navigateToServerGroupTreeView();
clickElementUsingId(PulseTestLocators.ServerGroups.sg3M3Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M3");
}
@Test
public void clickServGrpGridButtonShowsGridTest() {
navigateToServerGroupGridView();
verifyElementPresentByXpath(PulseTestLocators.ServerGroups.idSG1M3Xpath);
verifyElementPresentByXpath(PulseTestLocators.ServerGroups.idSG1M2Xpath);
verifyElementPresentByXpath(PulseTestLocators.ServerGroups.idSG1M1Xpath);
verifyElementPresentByXpath(PulseTestLocators.ServerGroups.nameM3Xpath);
verifyElementPresentByXpath(PulseTestLocators.ServerGroups.nameM2Xpath);
verifyElementPresentByXpath(PulseTestLocators.ServerGroups.nameM1Xpath);
}
@Test
public void memberNavigationFromServGrpGridTest() {
navigateToServerGroupGridView();
clickElementUsingXpath(PulseTestLocators.ServerGroups.idSG1M3Xpath);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M3");
navigateToServerGroupGridView();
clickElementUsingXpath(PulseTestLocators.ServerGroups.idSG1M1Xpath);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M1");
navigateToServerGroupGridView();
clickElementUsingXpath(PulseTestLocators.ServerGroups.idSG1M2Xpath);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M2");
}
@Test
public void verifyZonePresentTest() {
navigateToRedundancyZonesTreeView();
verifyElementPresentById(PulseTestLocators.RedundancyZone.zoneRZ1Id);
verifyElementPresentById(PulseTestLocators.RedundancyZone.zoneRZ2Id);
}
@Test
public void expandAndCloseRdncyZoneTest() {
navigateToRedundancyZonesTreeView();
clickElementUsingXpath(PulseTestLocators.RedundancyZone.zoneRZ1RZ2Xpath);
verifyElementAttributeById(PulseTestLocators.RedundancyZone.zoneRZ1Id, "style", "width: 720px; height: 415px;");
clickElementUsingXpath(PulseTestLocators.RedundancyZone.zoneRZ1RZ2Xpath);
clickElementUsingXpath(PulseTestLocators.RedundancyZone.zoneRZ2Xpath);
verifyElementAttributeById(PulseTestLocators.RedundancyZone.zoneRZ2Id, "style", "width: 720px; height: 415px;");
}
@Test
public void clickRZMembersNavigationTest() {
navigateToRedundancyZonesTreeView();
clickElementUsingId(PulseTestLocators.RedundancyZone.m1RZ1RZ2Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M1");
navigateToRedundancyZonesTreeView();
clickElementUsingId(PulseTestLocators.RedundancyZone.m2RZ1Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M2");
navigateToRedundancyZonesTreeView();
clickElementUsingId(PulseTestLocators.RedundancyZone.m3RZ2Id);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M3");
}
@Test
public void clickRZGridShowingGridTest() {
navigateToRedundancyZonesGridView();
verifyElementPresentByXpath(PulseTestLocators.RedundancyZone.idM2Xpath);
verifyElementPresentByXpath(PulseTestLocators.RedundancyZone.idM1Xpath);
verifyElementPresentByXpath(PulseTestLocators.RedundancyZone.idM3Xpath);
verifyTextPresrntByXpath(PulseTestLocators.RedundancyZone.idM2Xpath, "M2");
verifyTextPresrntByXpath(PulseTestLocators.RedundancyZone.idM1Xpath, "M1");
verifyTextPresrntByXpath(PulseTestLocators.RedundancyZone.idM3Xpath, "M3");
}
@Test
public void clickRZGridMembersNavigationTest() {
navigateToRedundancyZonesGridView();
clickElementUsingXpath(PulseTestLocators.RedundancyZone.idM2Xpath);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M2");
navigateToRedundancyZonesGridView();
clickElementUsingXpath(PulseTestLocators.RedundancyZone.idM1Xpath);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M1");
navigateToRedundancyZonesGridView();
clickElementUsingXpath(PulseTestLocators.RedundancyZone.idM3Xpath);
verifyTextPresrntById(PulseTestLocators.RegionDetailsView.memberNameId, "M3");
}
@Test
public void verifySortingOptionsTest(){
clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
clickElementUsingId(PulseTestLocators.TopologyView.treeMapButtonId);
verifyElementPresentById(PulseTestLocators.TopologyView.hotSpotId);
clickElementUsingId(PulseTestLocators.TopologyView.hotSpotId);
verifyElementPresentByLinkText("Heap Usage");
verifyElementPresentByLinkText("CPU Usage");
}
/*
* HotSpot test scripts -
*/
//--- Topology view
@Test
public void testHotSpotOptPrsntOnTopologyView(){
navigateToTopologyTreeView();
Assert.assertEquals(PulseTestData.Topology.hotSpotHeapLbl, getTextUsingId(PulseTestLocators.TopologyView.hotSpotId));
}
@Test
public void testHotSpotOptionsTopologyView(){
navigateToTopologyTreeView();
clickElementUsingId(PulseTestLocators.TopologyView.hotSpotId);
Assert.assertEquals(PulseTestData.Topology.hotSpotHeapLbl, getTextUsingXpath(PulseTestLocators.TopologyView.heapUsageXpath));
Assert.assertEquals(PulseTestData.Topology.hotSpotCPULbl, getTextUsingXpath(PulseTestLocators.TopologyView.cpuUsageXpath));
}
@Test
public void testCpuUsageNavigationOnTopologyView(){
navigateToTopologyTreeView();
clickElementUsingId(PulseTestLocators.TopologyView.hotSpotId);
clickElementUsingXpath(PulseTestLocators.TopologyView.cpuUsageXpath);
Assert.assertEquals(PulseTestData.Topology.hotSpotCPULbl, getTextUsingId(PulseTestLocators.TopologyView.hotSpotId));
}
@Test
public void testHeapUsageNavigationOnTopologyView(){
navigateToTopologyTreeView();
clickElementUsingId(PulseTestLocators.TopologyView.hotSpotId);
clickElementUsingXpath(PulseTestLocators.TopologyView.heapUsageXpath);
Assert.assertEquals(PulseTestData.Topology.hotSpotHeapLbl, getTextUsingId(PulseTestLocators.TopologyView.hotSpotId));
}
@Test
public void testSortingUsingCpuUsageOnTopologyView(){
navigateToTopologyTreeView();
clickElementUsingId(PulseTestLocators.TopologyView.hotSpotId);
clickElementUsingXpath(PulseTestLocators.TopologyView.cpuUsageXpath);
assertMemberSortingByCpuUsage();
}
@Test
public void testSortingUsingHeapUsageOnTopologyView(){
navigateToTopologyTreeView();
clickElementUsingId(PulseTestLocators.TopologyView.hotSpotId);
clickElementUsingXpath(PulseTestLocators.TopologyView.heapUsageXpath);
assertMemberSortingByHeapUsage();
}
//--- Server Group view
@Test
public void testHotSpotOptPrsntOnServerGroupView(){
navigateToServerGroupTreeView();
Assert.assertEquals(PulseTestData.ServerGroups.hotSpotHeapLbl, getTextUsingId(PulseTestLocators.ServerGroups.hotSpotId));
}
@Test
public void testHotSpotOptionsServerGroupView(){
navigateToServerGroupTreeView();
clickElementUsingId(PulseTestLocators.ServerGroups.hotSpotId);
Assert.assertEquals(PulseTestData.ServerGroups.hotSpotHeapLbl, getTextUsingXpath(PulseTestLocators.ServerGroups.heapUsageXpath));
Assert.assertEquals(PulseTestData.ServerGroups.hotSpotCPULbl, getTextUsingXpath(PulseTestLocators.ServerGroups.cpuUsageXpath));
}
@Test
public void testCpuUsageNavigationOnServerGroupView(){
navigateToServerGroupTreeView();
clickElementUsingId(PulseTestLocators.ServerGroups.hotSpotId);
clickElementUsingXpath(PulseTestLocators.ServerGroups.cpuUsageXpath);
Assert.assertEquals(PulseTestData.ServerGroups.hotSpotCPULbl, getTextUsingId(PulseTestLocators.ServerGroups.hotSpotId));
}
@Test
public void testHeapUsageNavigationOnServerGroupView(){
navigateToServerGroupTreeView();
clickElementUsingId(PulseTestLocators.ServerGroups.hotSpotId);
clickElementUsingXpath(PulseTestLocators.ServerGroups.heapUsageXpath);
Assert.assertEquals(PulseTestData.ServerGroups.hotSpotHeapLbl, getTextUsingId(PulseTestLocators.ServerGroups.hotSpotId));
}
@Test
public void testSortingUsingCpuUsageOnServerGroupView(){
navigateToServerGroupTreeView();
clickElementUsingId(PulseTestLocators.ServerGroups.hotSpotId);
clickElementUsingXpath(PulseTestLocators.ServerGroups.heapUsageXpath);
assertMemeberSortingBySgHeapUsage();
}
@Test
public void testSortingUsingHeapUsageOnServerGroupView(){
navigateToServerGroupTreeView();
clickElementUsingId(PulseTestLocators.ServerGroups.hotSpotId);
clickElementUsingXpath(PulseTestLocators.ServerGroups.cpuUsageXpath);
assertMemeberSortingBySgCpuUsage();
}
//--- Redundancy Zone view
@Test
public void testHotSpotOptPrsntOnRedundancyZoneView(){
navigateToRedundancyZonesTreeView();
Assert.assertEquals(PulseTestData.RedundancyZone.hotSpotHeapLbl, getTextUsingId(PulseTestLocators.RedundancyZone.hotSpotId));
}
@Test
public void testHotSpotOptionsRedundancyZoneView(){
// navigate to Redundancy Zones - Tree View
navigateToRedundancyZonesTreeView();
clickElementUsingId(PulseTestLocators.RedundancyZone.hotSpotId);
Assert.assertEquals(PulseTestData.RedundancyZone.hotSpotHeapLbl, getTextUsingXpath(PulseTestLocators.RedundancyZone.heapUsageXpath));
Assert.assertEquals(PulseTestData.RedundancyZone.hotSpotCPULbl, getTextUsingXpath(PulseTestLocators.RedundancyZone.cpuUsageXpath));
}
@Test
public void testCpuUsageNavigationOnRedundancyZoneView(){
// navigate to Redundancy Zones - Tree View
navigateToRedundancyZonesTreeView();
clickElementUsingId(PulseTestLocators.RedundancyZone.hotSpotId);
clickElementUsingXpath(PulseTestLocators.RedundancyZone.cpuUsageXpath);
Assert.assertEquals(PulseTestData.RedundancyZone.hotSpotCPULbl, getTextUsingId(PulseTestLocators.RedundancyZone.hotSpotId));
}
@Test
public void testHeapUsageNavigationOnRedundancyZoneView(){
// navigate to Redundancy Zones - Tree View
navigateToRedundancyZonesTreeView();
clickElementUsingId(PulseTestLocators.RedundancyZone.hotSpotId);
clickElementUsingXpath(PulseTestLocators.RedundancyZone.heapUsageXpath);
Assert.assertEquals(PulseTestData.RedundancyZone.hotSpotHeapLbl, getTextUsingId(PulseTestLocators.RedundancyZone.hotSpotId));
}
@Test
public void testSortingUsingHeapUsageOnRedundancyView(){
// navigate to Redundancy Zones - Tree View
navigateToRedundancyZonesTreeView();
clickElementUsingId(PulseTestLocators.RedundancyZone.hotSpotId);
clickElementUsingXpath(PulseTestLocators.RedundancyZone.heapUsageXpath);
assertMemeberSortingByRzHeapUsage();
}
@Test
public void testSortingUsingCpuUsageOnRedundancyView(){
// navigate to Redundancy Zones - Tree View
navigateToRedundancyZonesTreeView();
clickElementUsingId(PulseTestLocators.RedundancyZone.hotSpotId);
clickElementUsingXpath(PulseTestLocators.RedundancyZone.cpuUsageXpath);
assertMemeberSortingByRzCpuUsage();
}
@Test
public void testDataBrowserFilterFeature(){
// navigate to Data browser page
loadDataBrowserpage();
List<WebElement> regionLst = getRegionsFromDataBrowser();
String []regionNames = new String[regionLst.size()];
for(int regionIndex = 0; regionIndex < regionLst.size(); regionIndex++){
regionNames[regionIndex] = findElementByXpath(PulseTestLocators.DataBrowser.rgnSpanFirstPart + (regionIndex + 1 ) + PulseTestLocators.DataBrowser.rgnSpanSecondPart).getText();
}
// type each region name in region filter and verify respective region(s) are displayed in region list
for (String region : regionNames) {
findElementById(PulseTestLocators.DataBrowser.rgnFilterTxtBoxId).clear();
findElementById(PulseTestLocators.DataBrowser.rgnFilterTxtBoxId).sendKeys(region);
List<WebElement> regionLst1 = getRegionsFromDataBrowser();
for(int regionIndex = 1; regionIndex <= regionLst1.size(); regionIndex++){
Assert.assertEquals(region, findElementByXpath(PulseTestLocators.DataBrowser.rgnSpanFirstPart + regionIndex + PulseTestLocators.DataBrowser.rgnSpanSecondPart).getText());
}
}
}
@Test
public void testDataBrowserFilterPartialRegionName(){
// navigate to Data browser page
loadDataBrowserpage();
findElementById(PulseTestLocators.DataBrowser.rgnFilterTxtBoxId).clear();
// type partial region name in region filter and verify that all the regions that contains that text displays
findElementById(PulseTestLocators.DataBrowser.rgnFilterTxtBoxId).sendKeys(PulseTestData.DataBrowser.partialRgnName);
List<WebElement> regionLst = getRegionsFromDataBrowser();
for(int regionIndex = 0; regionIndex < regionLst.size(); regionIndex++){
Assert.assertTrue(findElementByXpath(PulseTestLocators.DataBrowser.rgnSpanFirstPart +
(regionIndex + 1 ) +
PulseTestLocators.DataBrowser.rgnSpanSecondPart).
getText().
contains(PulseTestData.DataBrowser.partialRgnName));
}
}
@Test
public void testDataBrowserClearButton(){
// navigate to Data browser page
loadDataBrowserpage();
sendKeysUsingId(PulseTestLocators.DataBrowser.queryEditorTxtBoxId, PulseTestData.DataBrowser.query1Text);
String editorTextBeforeClear = getTextUsingId(PulseTestLocators.DataBrowser.queryEditorTxtBoxId);
clickElementUsingXpath(PulseTestLocators.DataBrowser.btnClearXpath);
String editorTextAfterClear = getTextUsingId(PulseTestLocators.DataBrowser.queryEditorTxtBoxId);
Assert.assertFalse(PulseTestData.DataBrowser.query1Text.equals(editorTextAfterClear));
}
@Test
public void testDataBrowserHistoryQueue(){
// navigate to Data browser page
loadDataBrowserpage();
List<WebElement> numOfReg = driver.findElements(By.xpath(PulseTestLocators.DataBrowser.divDataRegions));
for(int i = 1; i <= numOfReg.size(); i ++){
if(getTextUsingId("treeDemo_" + i + "_span").equals( PulseTestData.DataBrowser.regName)){
searchByIdAndClick("treeDemo_" + i + "_check"); //driver.findElement(By.id("treeDemo_" + i + "_check")).click();
}
}
sendKeysUsingId(PulseTestLocators.DataBrowser.queryEditorTxtBoxId, PulseTestData.DataBrowser.query1Text);
clickElementUsingId(PulseTestLocators.DataBrowser.btnExecuteQueryId);
//Get required datetime format and extract date and hours from date time.
DateFormat dateFormat = new SimpleDateFormat(PulseTestData.DataBrowser.datePattern);
String queryDateTime = dateFormat.format(System.currentTimeMillis());
String queryTime[] = queryDateTime.split(":");
clickElementUsingId(PulseTestLocators.DataBrowser.historyIcon);
List<WebElement> historyLst = driver.findElements(By.xpath(PulseTestLocators.DataBrowser.historyLst));
String queryText = getTextUsingXpath(PulseTestLocators.DataBrowser.queryText);
String historyDateTime = getTextUsingXpath(PulseTestLocators.DataBrowser.historyDateTime);
//verify the query text, query datetime in history panel
Assert.assertTrue(PulseTestData.DataBrowser.query1Text.equals(queryText));
Assert.assertTrue(historyDateTime.contains(queryTime[0]));
}
}