Shell script to format date in yyyy.mm.dd format
#!/bin/bash year=2012 for (( c=1; c<=12; c++ )) do month=$(printf "%02d" $c) for (( d=1; d<=15; d++ )) do day=$(printf "%02d" $d) echo $year.$month.$day done done
Linux, Solaris, Scripting, Testing, QA, Database, Puzzles ...
#!/bin/bash year=2012 for (( c=1; c<=12; c++ )) do month=$(printf "%02d" $c) for (( d=1; d<=15; d++ )) do day=$(printf "%02d" $d) echo $year.$month.$day done done
Posted by Vishnu Agrawal at 10:57 PM 0 comments
Labels: shell scripting
import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.Message.RecipientType; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class EmailProcessor { private String mailHost; private String from; private String to; private String subject; private String text; public static void main(String[] args) { EmailProcessor emp = new EmailProcessor("mailhost", "from@test.com", "to1@test.com,to2@test.com", "Subject", "Email Text"); emp.send(); } public EmailProcessor(String mailhost, String from, String to, String subject, String text){ this.from = from; this.to = to; this.subject = subject; this.text = text; this.mailHost = mailhost; } public void send(){ Properties props = new Properties(); props.put("mail.smtp.host", mailHost); Session mailSession = Session.getDefaultInstance(props); Message simpleMessage = new MimeMessage(mailSession); InternetAddress fromAddress = null; InternetAddress[] toAddress = null; try { fromAddress = new InternetAddress(from); String[] toEmails = to.split(","); toAddress = new InternetAddress[toEmails.length]; for (int i = 0; i < toEmails.length; i++) { toAddress[i] = new InternetAddress(toEmails[i].trim()); } } catch (AddressException e) { Utility.logError(e.getMessage()); e.printStackTrace(); } try { simpleMessage.setFrom(fromAddress); simpleMessage.setRecipients(RecipientType.TO, toAddress); simpleMessage.setSubject(subject); simpleMessage.setText(text); Transport.send(simpleMessage); } catch (MessagingException e) { Utility.logError(e.getMessage()); e.printStackTrace(); } } }
Posted by Vishnu Agrawal at 10:47 PM 0 comments
Labels: java
public static void inputTextInAutocompleteField(String testField, String testValue) { try { selenium.type(testField, testValue); selenium.typeKeys(testField," \b") ; } catch (Exception e) { e.printStackTrace(); } }
Posted by Vishnu Agrawal at 6:29 PM 0 comments
Labels: selenium
Posted by Vishnu Agrawal at 5:12 PM 0 comments
Labels: selenium
#!/bin/bash FILENAME=test.csv OLDSEP=$IFS IFS=, [ ! -f $FILENAME ] && { echo "File not found : $FILENAME"; exit 99; } while read field1 field2 field3 field4 do echo "$field1 : $field2 : $field3 : $field4" done < $FILENAME IFS=$OLDSEP
Posted by Vishnu Agrawal at 1:02 PM 3 comments
Labels: linux, shell scripting, solaris
$chmod -R 777 logs/ $rm -rf logs/ $rm: cannot remove directory 'logs/': File existsChecked the logs folder content and found out that there was .nfs*** file in this, when I manually deleted this file, it was recreated immediately and the timestamp of the file was not current, it was same of which I just deleted.
$ls -lrta total 20K drwxrwxrwx 3 test vishnu 4.0K May 3 03:27 .. -rwxrwxr-x 1 test vishnu 11K May 3 03:27 .nfs29682 drwxrwxr-x 2 test vishnu 4.0K Jun 4 23:17 .To solve this issue, we need to find out which process is using this file and delete that process.
$/usr/sbin/fuser -u logs/.* logs/.: logs/..: logs/.nfs29682: 23142m(test)23142 is the process which is using this directory, we need to kill it.
kill -9 23142now delete the directory, it will be deleted successfully.
$rm -rf logs/ $
Posted by Vishnu Agrawal at 12:22 PM 0 comments
If you want to check whether selenium server is running or not, hit the url "http://host:port/selenium-server/driver/?cmd=testComplete", If response is returned that means, server is running on the given host:port. Here is the Java code for this:
import java.net.HttpURLConnection; import java.net.URL; public static boolean isSeleniumServerRunning(String host, int port) { try { String baseUrl = "http://" + host + ":" + port; System.out.println("Checking selenium server status [" + baseUrl + "]"); URL url = new URL(baseUrl + "/selenium-server/driver/?cmd=testComplete"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); if(connection.getResponseCode() == HttpURLConnection.HTTP_OK) return true; } catch (Exception e) { System.err.println("Could not check selenium server status: " + e.getMessage()); e.printStackTrace(); } return false; }
Posted by Vishnu Agrawal at 10:21 PM 0 comments
public static void copyFolder(String srcFile, String destFile) throws IOException { File src = new File(srcFile); File dest = new File(destFile); if(!src.exists()) { System.out.println("Source folder do not exists [" + srcFile + "]"); return; } if(src.isDirectory()) { //if directory not exists, create it if(!dest.exists()) { dest.mkdir(); } //list all the directory contents String files[] = src.list(); for (String file : files) { //construct the src and dest file structure String sourceFile = src.getAbsolutePath() + File.separator + file; String destinationFile = dest.getAbsolutePath() + File.separator + file; //recursive copy copyFolder(sourceFile, destinationFile); } } else { //if file, then copy it //Use bytes stream to support all file types InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest); byte[] buffer = new byte[1024]; int length; //copy the file content in bytes while ((length = in.read(buffer)) > 0){ out.write(buffer, 0, length); } in.close(); out.close(); } }
Posted by Vishnu Agrawal at 10:15 PM 0 comments
Labels: java
public static boolean compareArrays(String[] actual, String[] expected)
{
if(actual == null || expected == null)
return false;
Arrays.sort(actual);
Arrays.sort(expected);
if(Arrays.equals(actual, expected))
return true;
else
return false;
}
Posted by Vishnu Agrawal at 10:09 PM 0 comments
Labels: java
Ctrl a :sessionname newSessionName3. Send a command to a window in a running screen session from the commandline
screen -x <screen session name> -p <window number or name> -X stuff '<command>\012'4. Create screen session with commands running
startup_message off vbell off caption always "%{= bb}%{+b w}%n %h %=%t %c" hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<" activity "Activity in %t(%n)" deflogin on shell -/bin/bash screen -t TAB1 stuff "cd $HOME && ls -1rt | tail -1 | xargs tail -f \012" screen -t TAB2 stuff "cd $HOME && top \012"- Run screen -S test -c .screenrc_test
screen -S test -dm -c .screenrc_test
Posted by Vishnu Agrawal at 11:07 AM 0 comments
Labels: gnu screen, screen
Here is the script to implement expand/collapse functionality in a web page.
function toggle(showHideDiv, switchImgTag) { var elem = document.getElementById(showHideDiv); var imageElem = document.getElementById(switchImgTag); if(elem.style.display == "block") { elem.style.display = "none"; imageElem.innerHTML = ''; } else { elem.style.display = "block"; imageElem.innerHTML = ''; } } function Collapse(showHideDiv, switchImgTag) { var elem = document.getElementById(showHideDiv); var imageElem = document.getElementById(switchImgTag); elem.style.display = "none"; imageElem.innerHTML = ''; } function Expand(showHideDiv, switchImgTag) { var elem = document.getElementById(showHideDiv); var imageElem = document.getElementById(switchImgTag); elem.style.display = "block"; imageElem.innerHTML = ''; } function ExpandAll() { var elements = document.getElementsByTagName("a"); for (var i = 0; i < elements.length; i++) { var myname = elements[i].getAttribute("id"); if(myname != null) { if(myname.substr(0, 4) == "img-") { var linkid = myname.substr(4); Expand("div-"+ linkid, "img-"+linkid); } } } document.getElementById('expand-all').style.display='none'; document.getElementById('collapse-all').style.display='block'; } function CollapseAll() { var elements = document.getElementsByTagName("a"); for (var i = 0; i < elements.length; i++) { var myname = elements[i].getAttribute("id"); if(myname != null) { if(myname.substr(0, 4) == "img-") { var linkid = myname.substr(4); Collapse("div-"+ linkid, "img-"+linkid); } } } document.getElementById('expand-all').style.display='block'; document.getElementById('collapse-all').style.display='none'; }
Expand Collapse Test
Test1
|
Test2
|
body, table { font-family: Verdana, Arial, sans-serif; font-size: 12; } table { border-collapse: collapse; border: 1px solid #ccc; } th, td { padding-left: 0.3em; padding-right: 0.3em; } a { text-decoration: none; } .title { font-style: italic; } .selected { background-color: #ffffcc; } .status_done { background-color: #eeffee; } .status_passed { background-color: #00FF00; } .status_failed { background-color: #FF0000; } .status_notrun { background-color: #FFFF00; } .status_header { background-color: #FFA500; } .status_duration { background-color: #00FFFF; } .breakpoint { background-color: #cccccc; border: 1px solid black; }
Posted by Vishnu Agrawal at 10:03 AM 0 comments
Labels: javascript, web
In web applications, buttons which are rendered by GWT (google-web-toolkit) cannot be clicked. Selenium RC doesn't recognize them as HTML button. so following will not work for those type of buttons/element
selenium.click(elementLocator)After some googling, I found out that we can click on these elements by native key events with follwoing code.
public static void clickOnGWTPopElement(String elementLocator) { try{ //normal click doesn't work on GWT popup elements so we need to perform native mouse operations selenium.mouseOver(elementLocator); selenium.mouseDown(elementLocator); selenium.mouseUp(elementLocator); }catch (Exception e) { e.printStackTrace(); } }
Posted by Vishnu Agrawal at 10:16 AM 0 comments
package com.qa.test; import java.io.FileOutputStream; import java.util.Iterator; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class SpreadSheetWriter { /** This method writes data to new excel file **/ public static void writeDataToExcelFile(List> data, String fileName) { try{ HSSFWorkbook myWorkBook = new HSSFWorkbook(); HSSFSheet mySheet = myWorkBook.createSheet(); HSSFRow myRow = null; HSSFCell myCell = null; //Create header row createHeaderRow(mySheet); int rowNum = 1; Iterator
> iter = data.iterator(); while(iter.hasNext()) { myRow = mySheet.createRow(rowNum++); int cellNum = 0; List
key = iter.next(); for(String values: key) { myCell = myRow.createCell(cellNum++); myCell.setCellValue(values); } } FileOutputStream out = new FileOutputStream(fileName); myWorkBook.write(out); out.close(); }catch(Exception e){ e.printStackTrace(); } } }
Posted by Vishnu Agrawal at 9:06 PM 0 comments
Labels: java
import java.io.FileInputStream; import java.io.InputStream; import java.util.Iterator; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; public class ReadExcel { public static void main(String[] args){ try{ InputStream myxls = new FileInputStream("C:\\exceltest.xls"); HSSFWorkbook wb = new HSSFWorkbook(myxls); HSSFSheet sheet = wb.getSheetAt(0); Iteratorrows = sheet.rowIterator(); System.out.println("Total Rows :: " + sheet.getLastRowNum()); //Iterate over each row while (rows.hasNext()) { HSSFRow row = (HSSFRow) rows.next(); if(checkIfRowEmpty(row)) continue; int minColIndex = row.getFirstCellNum(); int maxColIndex = row.getLastCellNum(); for(int colIndex = minColIndex; colIndex <= maxColIndex; colIndex++) { HSSFCell cell = row.getCell(colIndex); // POI can't recognize empty cells of Excel, so we should create new cells with a blank value if(cell == null) { cell = row.createCell(colIndex); cell.setCellValue(" "); } String value = ""; switch(cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC: value = Double.toString(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_BOOLEAN: value = Boolean.toString(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_BLANK: value = ""; break; case HSSFCell.CELL_TYPE_ERROR: value = ""; break; case HSSFCell.CELL_TYPE_FORMULA: value = ""; break; default: value = cell.getStringCellValue(); break; } System.out.print(value + "|"); } System.out.println(); } } catch(Exception e){ e.printStackTrace(); } } public static boolean checkIfRowEmpty(HSSFRow row) { int minColumIndex = row.getFirstCellNum(); int maxColumnIndex = row.getLastCellNum(); boolean isRowEmpty = true; for(int columIndex = minColumIndex; columIndex <= maxColumnIndex; columIndex++) { HSSFCell cell = row.getCell(columIndex); if(cell == null || cell.toString().trim().isEmpty() || cell.toString().length() == 0){ } else{ isRowEmpty = false; return isRowEmpty; } } return isRowEmpty; } }
Posted by Vishnu Agrawal at 6:33 PM 0 comments
Labels: java