Tuesday, August 12, 2014

WAN Simulators

several years ago, i needed to emulate WAN for the ICA optimization thru WANScaler (now called CloudBridge), and i tried looking for software to simulate WAN behavior. here are the list of those i found in the internet. I evaluated most of them but decided to use WANem.

Frenzy 1.0 (free)
http://frenzy.org.ua/en/

WANem (free)
http://wanem.sourceforge.net/

Dummynet (free)
http://info.iet.unipi.it/~luigi/ip_dummynet/

WAN-emu (free)
http://speed.cis.nctu.edu.tw/wanemu/

NISTNet (free)
http://www-x.antd.nist.gov/nistnet/

Netem (free)
http://www.linuxfoundation.org/en/Net:Netem

Shunra (commercial)
http://www.shunra.com/

NetLimiter (commercial)
http://www.netlimiter.com/

PacketStorm (commercial)
http://www.packetstorm.com/

XPIdea WAN Emulator (commercial)
http://www.xpidea.com/Products/tabid/53/ProductID/19/Default.aspx

(this is a repost of my notes from our internal blog system. posting it here for future reference)

Wednesday, July 16, 2014

G11N Testing: Static UI Resource Verification Methodology & Tools

I belong to the Life-Cycle Maintenance team in Citrix Tokyo where we are responsible for testing and release of bugfixes, enhancements and new feature releases. Our team used to be under the Globalization Services organization before it got moved to the global LCM group. Though we primarily do functional regression testing on the bugfixes, we also have given some degree of focus to G11N testing. If the bugfix or the new features being tested has some user-interface related codes, we make sure that the UI elements are properly accessible and displayed correctly on their corresponding language platforms. Some examples of these UI elements are string event messages in the event logs, wizards and dialogs, and control labels. 

We primarily test released products in LCM and I have encountered several unlocalized texts/labels in the previous versions of XenApp. I had made some inquiry regarding the testing coverage executed by the product team on those areas, and come to know that some of these UI issues were not covered during the tests. 

I made a study on how static UI resource verification could improve the quality on these areas and had created several tools to aid this process. I conducted a research on the file formats which are being used in Citrix products and had explained a methodology in covering possible issues on the localized products. 


Above is the link to the PDF document which I wrote sometime in mid-2010. If you are into testing user-interfaces on localized platforms, I think it will be worth a read. I'll add more materials to these later, and if you have a question, please feel free to add your comments below.


Wednesday, July 2, 2014

Synfo: system info snapshot & diff tool

One of the testing coverage that we have in hotfix testing is install or upgrade testing. When the hotfix is delivered in an MSI patch i.e. an msp file, we have to make sure that the hotfix is properly installed - i.e. modified files, registry, services and drivers are properly updated; and also has to make sure that the hotfix, patched the right application.

Windows 2003 Add/Remove program app/patch entry
In WinXP or Win2003, the patches of an installed application are listed below it on the Add/Remove program utility (see left pix). In the figure, we can visually confirm that there are 2 patches installed to the SharePoint Services 3.0.

In Vista/Win2008 or later, all the applications and patches were now shown in the same hierarchy
Windows 2008 Program & Features panel
level; and it's hard to visually know which hotfix is a patch of which application. And considering that there are also hidden patches (those not visible in the Add/Remove program utility), there's a need for such a tool to list down all patches - visible or hidden.

Synfo was created to answer this need. This tool primarily make use of the Windows.Installer object to list all applications and patches, and also retrieve additional information from the registry to get the list of all installed components. Using the component's GUIDs, this tool will recreate the tree hierarchy structure of the application and its patches.

Other that the application and patches info, I also added the installed services info and system variables set in the system. This tool will then create a snapshot of these info in an xml file format as shown in the sample below:
Synfo XML output file

The root node is named as synfo and under it are 3 types of elements: info, services and products.

The info node will contain the system info where this utility was executed and also contains one env.vars subnodes which contains all the system variables set in the system

The services node, contains all the services info (node labeled as svc) with their id i.e. the service unique name. Each svc node contains all the attribute name and value pairs like service DisplayName and State.

The products node on the other hand contains all the applications (or products) installed in system which are being identified uniquely by a GUID. The product property values as well as the additional registry (reg.info) are also exported. If the product has patches installed in the system, these components will be listed under the patches child-node of that product. The count attribute shows the number of patches installed for that product. With this information at hand, it would easy to verify if the hotfix-under-test patched the right product.

This synfo tool does not only take a snapshot of the these info. It can also make a diff comparison of 2 synfo xml files. By comparing or getting the difference between the 2 snapshots, we would be able to verify what objects or properties changed, deleted or added! The figure below is a portion of the compare result xml file. Here it shows that there are 5 modified products. One of the modified product has 1 added patch and 1 removed patch. For modified values, the oldValue and the newValue will be shown side by side.
The tool could also add the xml stylesheet filepath to the output file if specified in the execution parameter.


Synfo compare result file
Tool Information:
requirements:  .Net runtime 2.0 or later is required.
download link: synfo.zip

Usage:
to dump the system info, run with no parameters.
 $>synfo.exe [enter]

to compare the synfo files:
 $>synfo.exe referenceFile [compareFile] [xslPath]
   referenceFile - the base synfo xml file. required
   [compareFile] - the synfo xml file to compare. if not specified, the current system state is used.
   [xslFilePath] - path to the result xml stylesheet. optional


Disclaimer:
This tool is provided 'as is' without warranty of any kind, either expressed or implied and such software is to be used at your own risk. 

Wednesday, June 25, 2014

Ohisashiburi

"Ohisashiburi" (お久しぶり) is the Japanese word used to greet someone we haven't met for quite a long time. I have not posted any blogs for almost 2years! So it's really "Ohisashiburi" to all of you :). Well, I was sort of busy at work, at home and with some extra-curricular & charity works :). Anyways, I have several topics and tools which I would like to share this coming few days. Here are some of them:

  • Synfo - dumps systeminfo, installed services info and installed products/patches info of a system into an XML file. Also provide compare feature for differencing between 2 synfo xml files.
  • mstSIS - dumps the Summary Information Stream of an MST file.
  • msidump - dumps all MSI tables including the _TransformView tables of the embedded MSTs into an XML file. Using the dumped xml files, the tool can also generate the diff (added, changed and removed objects).
  • ResourceExporter (enumres.exe) - dumps the string and messagetable resource texts from Win32 native modules (DLL, EXE or VRS) and string resources from .Net assemblies. Also extracts and converts ADM, IDT, CXMI and Citrix XML resource files into enumres XML file format.
  • ResourceCompare (rescmp.exe) - Compares the enumres XML files: cross-build or cross-language and reports possible resource related issues - duplicate IDs, unlocalized strings, newly-added/modified/deleted resource entries.
Please check them again soon...