Oracle’s Storage product line – a 1 pager

I reviewed Oracle’s Storage products and wanted to share my notes on it.
——————————
NAS
. Oracle/Sun bred
. ranges from 100TB – 1 Petabyte
. Utilizes ZFS – 128 bit filesystem
. Products: 7120, 7320, 7420
SAN
. main product is from Pillar acquisition – Pillar Axiom 600
  – utilizes QoS patented architecture which ensures predictable performance for each application
  – supports CIFS, NFS
  – supports SSD, FC, SATA drives
  – supports iSCSI, 8GB FC
Flash
. Products: Sun Storage F5100 Flash Array, Sun Flash Accelerator F20 PCIe Card, Sun Solid State Drives, Sun Flash Modules
. Reduction in IO service times by up to 15x
. Flash modules are in SO-DIMM form factor which is a big size reduction compared to normal disks
. Flash array handles up to 1.6 mil IOPS
Tape Storage
. Products and technology mainly from StorageTek acquisition
. Multiple tape products with various technology advancements
. It boasts highest capacity tape drive, highest availability, among others
Storage Software
. Products: HSM components, backup & recovery, security software, etc
. Robust HSM (Hierarchical Storage Management)
. Boasts
  – fastest backup and recovery for Oracle databases
  – integrated storage analytics
Storage Networking
. Oracle offers enterprise building blocks such as HBAs, switches, directors, etcs. Some of these
are sourced from Cisco and Brocade.
——————————

garlic theory

I avoid garlic as well as the pungent plants. In the Buddhist Mahayana tradition, devout practitioners usually avoid garlic because it falls under the 5 pungent plants category which increase sexual desire and/or anger. Here’s some background:
http://online.sfsu.edu/~rone/Buddhism/BuddhismAnimalsVegetarian/Buddhist Diet.htm .

In Traditional Chinese Medicine, there is a understanding that it is harmful in certain ways:

http://www.reikiempowermentseminars.com.au/assets/taoist.html

According to Ayurveda science, garlic falls under Rajasic food category, instead of Sattvic. It is also explained that it may dull the mind. People who meditate frequently have also mentioned that they are not able to stay focused after consuming garlic.

All of the above-mentioned theories, although coming from different perspectives, do not conflict, in fact, they are strongly related.

In my opinion, garlic is beneficial in certain ways but it does my harm than it does good. In Paul Pitchford’s “Healing With Whole Foods: Asian Traditions and Modern Nutrition”, he mentions the good and the bad in various chapters.

I did a quick search on the web and found a recent study that garlic may not help lower cholesterol, this is the first time I have heard of it.

http://med.stanford.edu/news_releases/2007/february/garlic.html

how many cheesecakes

I tried out some code at
http://seleniumexamples.com/blog/examples/cheesecake/ which counts how many cheescakes are on the menu at Cheese Cake Factory’s website but it didn’t work for me. It seems their website now has AJAX so I had to add timeout to make it work.

If no delay is added, I will hit a error similar to

Dec 22, 2010 6:16:27 PM com.gargoylesoftware.htmlunit.DefaultCssErrorHandler error
WARNING: CSS error: null [485:24] Error in expression. Invalid token "=". Was expecting one of: ...
but somehow I could not get the solution as mention at
link1 link2 to work with HtmlUnit. Using WebDriver with implicitlyWait method solve the problem for me.


import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.junit.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.WebDriver;
import java.util.concurrent.TimeUnit;

import java.util.List;

public class CheesecakeFactory {

WebDriver driver;

@Before
public void startDriver() {
driver = new FirefoxDriver();
}

@After
public void stopDriver() {
driver.close();
}

@Test
public void test_listCheesecakes() {
driver.get(“http://www.thecheesecakefactory.com/”);
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.findElement(By.linkText(“Menu”)).click();
driver.findElement(By.linkText(“Cheesecake”)).click();
List cheesecakes = driver.findElements(By
.xpath(“id(‘leftNav_levelTwo’)//li”));

System.out.println(cheesecakes.size() + ” cheesecakes:”);
for (int i = 0; i < cheesecakes.size(); i++) {
System.out.println(i + 1 + “. ” + cheesecakes.get(i).getText());
}
}

}

Selenium Example which takes screenshot as well the source code

Below is a piece of code which
1. navigates thru some craigslist pages
2. Takes a image screenshot and save it to a file
3. Saves the source code into a file
4. Pauses briefly for user to review the page

import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.io.*;
import org.openqa.selenium.TakesScreenshot;
import org.apache.commons.io.FileUtils;

public class recom {
public static void main(String[] args) throws Exception {

WebDriver driver = new FirefoxDriver();

driver.get("http://sfbay.craigslist.org");
WebElement element = driver.findElement(By.linkText("software / qa / dba"));
element.click();

(new WebDriverWait(driver, 10)).until(new ExpectedCondition() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("sf");
}
});

element = driver.findElement(By.name("query"));
element.sendKeys("selenium");
element.submit();

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\\users\\Public\\screenshot.png"));
BufferedWriter out = new BufferedWriter(new FileWriter("c:\\users\\Public\\test.txt"));
out.write(driver.getPageSource());
Thread.sleep(5000);
driver.quit();
}
}

Roles of a Product Support Engineer and a QA Engineer

I have worked as a Product Support Engineer and as a QA Engineer before. In environments where the pace is really fast, it is sometimes not clear who should be doing what. So here, I would like to delineate what I believe needs to be done.

. Some tasks where QA overlaps Product Support Engineer role are
1. missing test cases (QA error) which gets discovered by client
2. corner cases
3. lack of documentation or clarity of documentation
4. Isolation of problem and determine reproducibility
5. Determining severity

. Product Support Engineer tasks are
1. Empathize customer needs
2. Redirecting issue/question to proper Dev team and/or PM
3. Produce and analyze logs to the best extent before escalation
4. Open/manage alert reports for high severity issues

. QA Engineer tasks are
1. Test WELL
2. Automation
3. Produce report on product health at intervals
4. Ensure docs and test docs are accurate
5. White box testing
6. Ensure product integrated w other components

Above is by no means a complete list. Under a tight timeline, prioritization and optimization needs to happen as much as possible.

selenium WebDriver

Below is a code of “Hello World” using selenium WebDriver. Selenium WebDriver per official website is now the de facto software replacing Selenium RC which has been deprecated. The advantage of WebDriver over RC is that it’s API is natively driven.

import java.util.concurrent.TimeUnit;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import com.thoughtworks.selenium.*;

public class HelloWorld {

WebDriver currentBrowser;

@Before
public void setupBrowser() {
this.currentBrowser = new FirefoxDriver();
}

@Test
public void runTestForFireFox() {
this.searchBing();
}

@Test
public void runTestForFF2() {
this.searchGoogle();
}

private void searchBing() {

this.currentBrowser.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
this.currentBrowser.get("http://bing.com");
WebElement searchInput = this.currentBrowser.findElement(By.xpath("//input[@name='q']"));
searchInput.sendKeys("Hello Bing");

}

private void searchGoogle() {

this.currentBrowser.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
this.currentBrowser.get("http://google.com");
WebElement searchInput = this.currentBrowser.findElement(By.xpath("//input[@name='q']"));
searchInput.sendKeys("Hello World");

}

@After
public void tearDown() throws Exception {
this.currentBrowser.quit();
}

}