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);
Iterator rows = 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