btservices_plat/bluetooth_engine_settings_api/tsrc/LC_ATS3DropGen.py
changeset 0 f63038272f30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/btservices_plat/bluetooth_engine_settings_api/tsrc/LC_ATS3DropGen.py	Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,659 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+import os
+import sys
+import string
+from xml.dom.minidom import Document
+import re
+
+TRUE    = 1
+FALSE   = 0
+
+#Parameter Parsing
+NONEOPTION      = 0
+PATHOPTION      = 1
+IMAGEPATHOPTION = 2
+TARGETOPTION    = 3
+PLUGINRSCOPTION = 4
+HARNESSOPTION   = 5
+STIFTYPEOPTION  = 6
+
+pluginrscs = []
+testspath = ""
+imagepath = ""
+target = ""
+targethost = ""
+harness = ""
+stiftype = ""
+
+index = 1
+argnumber = len(sys.argv)
+if((argnumber < 2) or (sys.argv[1] == "HELP") or (sys.argv[1] == "help") or (sys.argv[1] == "Help")or (sys.argv[1] == "-HELP") or (sys.argv[1] == "-help") or (sys.argv[1] == "-Help")):
+    print "\n"
+    print "********** DropGenerator Tool Usage Manual ********** "
+    print ""
+    print " -------- THIS TOOL IS USED FOR: --------"
+    print "     - Building the test module "
+    print "     - Create the ATS3Drop folder under tsrc folder"
+    print "     - Generate test.xml file under tsrc folder"
+    print "     - Generate testdrop.zip file including ATS3Drop and test.xml"
+    print ""
+    print " -------- PARAMETERS TO BE PASSED TO THE TOOL: -------- \n"
+    print " dropgenerator.py -PATH <complete path of tests folder>"
+    print "                 -IMAGEPATH <complete path of the images>"
+    print "                 -TARGET <target hardware type eg: devlon>"
+    print "                 [-PLUGINRSCS <list of ecom plugin resources files>]"
+    print "                 -HARNESS <test harness used eg: STIF>"
+    print "                 -STIFTYPE <type of STIF test module used, if Harness is STIF>"
+    print "                     Supported STIF Types: Testscripter, Hardcoded"
+    sys.exit()
+
+# read paramters
+option = NONEOPTION
+for index in range(len(sys.argv)):
+    param = sys.argv[index]
+    if((param == "-PATH") or (param == "-path") or (param == "-Path")):
+        option = PATHOPTION
+        param = sys.argv[index]
+        continue
+    if((param == "-IMAGEPATH") or (param == "-imagepath") or (param == "-Imagepath")):
+        option = IMAGEPATHOPTION
+        param = sys.argv[index]
+        continue    
+    elif((param == "-TARGET") or (param == "-target") or (param == "-Target")):
+        option = TARGETOPTION
+        param = sys.argv[index]
+        continue
+    elif((param == "-PLUGINRSCS") or (param == "-pluginrscs") or (param == "-Pluginrscs")):
+        option = PLUGINRSCOPTION
+        param = sys.argv[index]
+        continue
+    elif((param == "-DATAFILES") or (param == "-datafiles") or (param == "-Datafiles")):
+        option = DATAFILESOPTION
+        param = sys.argv[index]
+        continue
+    
+    elif((param == "-HARNESS") or (param == "-harness") or (param == "-Harness")):
+        option = HARNESSOPTION
+        param = sys.argv[index]
+        continue
+
+    elif((param == "-STIFTYPE") or (param == "-Stiftype") or (param == "-stiftype")):
+        option = STIFTYPEOPTION
+        param = sys.argv[index]
+        continue    
+
+    if(option == PATHOPTION):
+        testspath = param
+
+    if(option == IMAGEPATHOPTION):
+        imagepath = param
+
+    if(option == TARGETOPTION):
+        target = param
+        
+    if(option == PLUGINRSCOPTION):
+        pluginrscs.append(param)
+
+    if(option == HARNESSOPTION):
+        harness = param
+
+    if(option == STIFTYPEOPTION):
+        stiftype = param
+    
+#validating parameters passed
+if(cmp(testspath, "") == 0):
+    print "\n ERROR: tests PATH parameter not provided"
+    sys.exit()
+
+if(cmp(imagepath, "") == 0):
+    print "\n ERROR: image PATH parameter not provided"
+    sys.exit()
+
+if(cmp(target, "") == 0):
+    print "\n ERROR: TARGET parameter not provided"
+    sys.exit()
+
+if(cmp(harness, "") == 0):
+    print "\n ERROR: HARNESS parameter not provided"
+    sys.exit()
+elif((cmp(harness, "STIF") == 0) or (cmp(harness, "stif") == 0) or (cmp(harness, "Stif") == 0)):
+    if(cmp(stiftype, "") == 0):
+        print "\n ERROR: STIFTYPE parameter not provided"
+        sys.exit()
+
+EXECUTABLE  = 0
+CFGFILE     = 1
+INIFILE     = 2
+FLASHFILE   = 3
+DATAFILE    = 4
+INCLUDEFILE = 5
+MMPFILE     = 6
+INFFILE     = 7
+PLUGINRSCFILE = 8
+
+EXTDLL      = ".dll"
+EXTEXE      = ".exe"
+EXTCFG      = ".cfg"
+EXTMMP      = ".mmp"
+
+COMMONPATH  = "\\tsrc"
+
+#get the list of files&dirs in tests folder and clean ATS3Drop folder, test.xml and testdrop package
+Directory = testspath
+os.system("dir "+Directory+" /B /A > files1.txt")
+pre = open("files1.txt", 'r')
+file = pre.readline()
+while file:
+   if(file[-1] == "\n"):
+        file = file[:-1]
+        
+   if(cmp(file, "ATS3Drop") == 0):
+       os.system("rmdir /S /Q " + Directory + "\\" + file)
+   elif(cmp(file, "test.xml") == 0):
+       os.system("del /Q " + Directory + "\\" + file)
+   elif(cmp(file, "testdrop.zip") == 0):
+       os.system("del /Q " + Directory + "\\" + file)
+   file = pre.readline()
+pre.close()
+print "\nDirectory Path Parsed: "+Directory+"\n"
+
+#list all files under tests folder
+os.system("dir "+Directory+" /S/B /A-D > files.txt")
+cpp = open("files.txt", 'r')
+
+CfgFiles        = []
+ExecutableFiles = []
+
+count = 0
+file = cpp.readline()
+
+#go through each file in files.txt and pick up .cfg, and extract binary names with extension .dll and .exe from mmp files.
+while file:
+    if(file[-1] == "\n"):
+        file = file[:-1]
+
+    if((re.search("\.cfg$", file) != None )):
+        CfgFiles.append(file)
+
+    if((re.search("\.mmp$", file) != None )):
+        #parsing mmp file for getting the executable name
+        mmp = open(file, "r")
+        mmpline = mmp.readline()
+        while mmpline:
+            if(string.find(mmpline, "TARGET ") != -1):
+                mmplinetarget = string.split(mmpline)
+                ExecutableFiles.append(mmplinetarget[-1])
+                break
+            mmpline = mmp.readline()
+        mmp.close();
+            
+    count = count + 1
+    file = cpp.readline()
+cpp.close();
+
+#validate if any .cfg exists as we are using STIP scripter.
+if((cmp(harness, "STIF") == 0) or (cmp(harness, "stif") == 0) or (cmp(harness, "Stif") == 0)):
+    if((cmp(stiftype, "TESTSCRIPTER") == 0) or (cmp(stiftype, "Testscripter") == 0) or (cmp(stiftype, "testscripter") == 0)):
+         if(len(CfgFiles) == 0):
+             print "\n CFG file not available for TestScripter type STIF module"
+             sys.exit()
+
+path = string.split(Directory, "\\")
+EXECUTABLEPATH = path[0] + "\\epoc32\\RELEASE\\armv5\\UREL\\"
+PLUGINRESOURCEPATH = path[0] + "\\epoc32\\data\Z\\resource\\plugins\\"
+
+#Create test drop structure and copy files to test drop
+print "\n Creating ATSDrop Directory"
+ret = os.mkdir(Directory + "\\ATS3Drop")
+ATS3DropDir = Directory + "\\ATS3Drop\\"
+ret = os.mkdir(Directory + "\\ATS3Drop\\armv5_urel")
+ATS3EXEDir = Directory + "\\ATS3Drop\\armv5_urel"
+ret = os.mkdir(Directory + "\\ATS3Drop\\images")
+ATS3ImageDir = Directory + "\\ATS3Drop\\images"
+
+DropFloderCreated = TRUE
+
+print "\n Copying files to the Drop"
+
+#copy test binaries
+for file in ExecutableFiles: 
+    print("\n copy " + EXECUTABLEPATH + file +" to "+ ATS3EXEDir)
+    ret = os.system("copy /Y "+ EXECUTABLEPATH + file +" "+ ATS3EXEDir)
+    if(ret != 0):
+        print "Error : unable to copy " + EXECUTABLEPATH + file
+        sys.exit()
+    
+#copy STIF .cfg files
+for file in CfgFiles:
+    print("\n copy " + file +" to "+ ATS3DropDir)
+    ret = os.system("copy /Y "+ file +" "+ ATS3DropDir)
+    if(ret != 0):
+        print "Error : unable to copy " + file
+        sys.exit()        
+#copy ecom plugin resource files
+for file in pluginrscs:
+    print("\n copy " + PLUGINRESOURCEPATH + file +" to "+ ATS3DropDir)
+    ret = os.system("copy /Y "+ PLUGINRESOURCEPATH + file +" "+ ATS3DropDir)
+    if(ret != 0):
+        print "Error : unable to copy " + PLUGINRESOURCEPATH + file
+        sys.exit()   
+
+#copy images files
+
+#list all files under the given image path
+os.system("dir "+ imagepath +" /S/B /A-D > imgs.txt")
+imgs = open("imgs.txt", 'r')
+
+ImageFiles  = []
+line = imgs.readline()
+#get the complete path and name of the core image
+while line:
+    if(line[-1] == "\n"):
+        line = line[:-1]
+
+    if((re.search("\.C00$", line) != None )):
+        ImageFiles.append(line)
+        break;
+    line = imgs.readline();
+imgs.close();
+
+#get the complete path and name of the variant image
+imgs = open("imgs.txt", 'r')
+line = imgs.readline()
+while line:
+    if(line[-1] == "\n"):
+        line = line[:-1]
+    if((re.search("\.V01$", line) != None )):
+        ImageFiles.append(line)
+        break
+    line = imgs.readline();
+imgs.close();
+
+#get the complete path and name of userdisk erase image
+imgs = open("imgs.txt", 'r')
+line = imgs.readline()
+while line:
+    if(line[-1] == "\n"):
+        line = line[:-1]
+    if((re.search("\erase_userdisk.fpsx$", line) != None )):
+        ImageFiles.append(line)
+        break
+    line = imgs.readline();
+imgs.close();
+
+#copy image files
+for file in ImageFiles:
+    print("\n copy " + file +" to "+ ATS3ImageDir)
+    ret = os.system("copy /Y "+ file +" "+ ATS3ImageDir)
+    if(ret != 0):
+        print "Error : unable to copy " + file
+        sys.exit()   
+
+DLLTARGETPATH   = "c:\\sys\\bin\\"
+PLUGINRSCTARGETPATH = "c:\\resource\\plugins\\"
+CFGTARGETPATH   = "e:\\testing\\"
+LOGTARGETPATH   = "e:\\temp\\lc_apitest\\"
+
+imagestoflash = []
+cfgFileNoPath = []
+filestoinstall = []
+BINARYFILE = 0
+NONBINARYFILE = 1
+
+for line in ImageFiles:
+    imagestoflash.append(line.split("\\")[-1])
+for line in CfgFiles:
+    cfgFileNoPath.append(line.split("\\")[-1])
+    filestoinstall.append([line.split("\\")[-1], NONBINARYFILE, CFGTARGETPATH])
+for file in ExecutableFiles:
+    filestoinstall.append([file, BINARYFILE, DLLTARGETPATH])
+for file in pluginrscs:
+    filestoinstall.append([file, NONBINARYFILE, PLUGINRSCTARGETPATH])
+
+
+#Create XML if the test drop folder is created
+if(DropFloderCreated == TRUE):
+    # Create the minidom document
+    #test tage
+    xmldoc = Document()
+    xmltest = xmldoc.createElement("test")
+    xmldoc.appendChild(xmltest)
+
+    #id tag
+    xmlid = xmldoc.createElement("id")
+    xmltest.appendChild(xmlid)
+    xmlidtext = xmldoc.createTextNode("1")
+    xmlid.appendChild(xmlidtext)
+
+    xmlname = xmldoc.createElement("name")
+    xmltest.appendChild(xmlname)
+    xmlnametext = xmldoc.createTextNode("LC API test")
+    xmlname.appendChild(xmlnametext)
+
+    #target tag
+    xmltarget = xmldoc.createElement("target")
+    xmltest.appendChild(xmltarget)
+
+    xmltergetdevice1 = xmldoc.createElement("device")
+    xmltergetdevice1.setAttribute("alias", "DEFAULT")
+    xmltergetdevice1.setAttribute("rank", "none")
+    xmltarget.appendChild(xmltergetdevice1)
+    
+    xmltargetproperty1 = xmldoc.createElement("property")
+    xmltargetproperty1.setAttribute("value",harness)
+    xmltargetproperty1.setAttribute("name","HARNESS")
+    xmltergetdevice1.appendChild(xmltargetproperty1)
+
+    xmltargetproperty2 = xmldoc.createElement("property")
+    xmltargetproperty2.setAttribute("value",target)
+    xmltargetproperty2.setAttribute("name","TYPE")
+    xmltergetdevice1.appendChild(xmltargetproperty2)
+
+    #plan tag
+    xmlplan1 = xmldoc.createElement("plan")
+    xmlplan1.setAttribute("passrate","100")
+    xmlplan1.setAttribute("enabled","true")
+    xmlplan1.setAttribute("harness",harness)
+    xmlplan1.setAttribute("name",string.rstrip("Test Plan"))
+    xmlplan1.setAttribute("id","1.1")
+    xmltest.appendChild(xmlplan1)
+
+    #session tag
+    xmlp1session1 = xmldoc.createElement("session")
+    xmlp1session1.setAttribute("passrate","100")
+    xmlp1session1.setAttribute("enabled","true")
+    xmlp1session1.setAttribute("harness",harness)
+    xmlp1session1.setAttribute("name","session")
+    xmlp1session1.setAttribute("id","1.1.1")
+    xmlplan1.appendChild(xmlp1session1)
+
+    #set tag
+    xmlp1s1set1 = xmldoc.createElement("set")
+    xmlp1s1set1.setAttribute("passrate","100")
+    xmlp1s1set1.setAttribute("enabled","true")
+    xmlp1s1set1.setAttribute("harness",harness)
+    xmlp1s1set1.setAttribute("name","set")
+    xmlp1s1set1.setAttribute("id","1.1.1.1")
+    xmlp1session1.appendChild(xmlp1s1set1)
+
+    xmlp1s1s1target = xmldoc.createElement("target")
+    xmlp1s1set1.appendChild(xmlp1s1s1target)
+
+    xmlp1s1s1targetdevice = xmldoc.createElement("device")
+    xmlp1s1s1targetdevice.setAttribute("alias","DEFAULT")
+    xmlp1s1s1targetdevice.setAttribute("rank","master")
+    xmlp1s1s1target.appendChild(xmlp1s1s1targetdevice)
+
+    #case tag
+    xmlp1s1s1case1 = xmldoc.createElement("case")
+    xmlp1s1s1case1.setAttribute("passrate","100")
+    xmlp1s1s1case1.setAttribute("enabled","true")
+    xmlp1s1s1case1.setAttribute("harness",harness)
+    xmlp1s1s1case1.setAttribute("name","Test Case 1")
+    xmlp1s1s1case1.setAttribute("id","1.1.1.1.1")
+    xmlp1s1set1.appendChild(xmlp1s1s1case1)
+
+    #flash tags if there are images    
+    for xmlimage in imagestoflash:
+        xmlp1s1s1c1flash = xmldoc.createElement("flash")
+        xmlp1s1s1case1.appendChild(xmlp1s1s1c1flash)
+        xmlp1s1s1c1flash.setAttribute("target-alias","DEFAULT")
+        xmlp1s1s1c1flash.setAttribute("images","ATS3Drop\\images\\" + xmlimage)
+            
+    #install steps
+    xmlstepcount = 0
+    for file in filestoinstall:
+        xmlstepcount = xmlstepcount + 1
+        #step1
+        xmlp1s1s1c1step = xmldoc.createElement("step")
+        xmlp1s1s1c1step.setAttribute("significant","false")
+        xmlp1s1s1c1step.setAttribute("passrate","100")
+        xmlp1s1s1c1step.setAttribute("enabled","true")
+        xmlp1s1s1c1step.setAttribute("harness",harness)
+        xmlp1s1s1c1step.setAttribute("name","Step "+str(xmlstepcount))
+        xmlp1s1s1c1step.setAttribute("id","1.1.1.1.1."+str(xmlstepcount))
+        xmlp1s1s1case1.appendChild(xmlp1s1s1c1step)
+
+        xmlp1s1s1c1s1command1 = xmldoc.createElement("command")
+        xmlp1s1s1c1step.appendChild(xmlp1s1s1c1s1command1)
+        xmlp1s1s1c1s1command1text = xmldoc.createTextNode("install")
+        xmlp1s1s1c1s1command1.appendChild(xmlp1s1s1c1s1command1text)
+
+        xmlp1s1s1c1s1params1 = xmldoc.createElement("params")
+        xmlp1s1s1c1step.appendChild(xmlp1s1s1c1s1params1)
+        if(file[1] == BINARYFILE):
+            #parameter1
+            xmlp1s1s1c1s1p1param1 = xmldoc.createElement("param")
+            xmlp1s1s1c1s1p1param1.setAttribute("type","binary")
+            xmlp1s1s1c1s1params1.appendChild(xmlp1s1s1c1s1p1param1)
+            #end of parameter1
+        #parameter2
+        xmlp1s1s1c1s1p1param1 = xmldoc.createElement("param")
+        xmlp1s1s1c1s1p1param1.setAttribute("src",file[0])
+        xmlp1s1s1c1s1params1.appendChild(xmlp1s1s1c1s1p1param1)
+        #end of parameter2
+        #parameter3
+        xmlp1s1s1c1s1p1param1 = xmldoc.createElement("param")
+        xmlp1s1s1c1s1p1param1.setAttribute("dst",file[2] + file[0])
+        xmlp1s1s1c1s1params1.appendChild(xmlp1s1s1c1s1p1param1)
+        #end of parameter3
+        #parameter4
+        xmlp1s1s1c1s1p1param1 = xmldoc.createElement("param")
+        xmlp1s1s1c1s1p1param1.setAttribute("component-path","ATS3Drop")
+        xmlp1s1s1c1s1params1.appendChild(xmlp1s1s1c1s1p1param1)
+        #end of parameter4
+        #end of Step1
+
+    xmlstepcount = xmlstepcount + 1
+    xmlp1s1s1c1step6 = xmldoc.createElement("step")
+    xmlp1s1s1c1step6.setAttribute("significant","false")
+    xmlp1s1s1c1step6.setAttribute("passrate","100")
+    xmlp1s1s1c1step6.setAttribute("enabled","true")
+    xmlp1s1s1c1step6.setAttribute("harness",harness)
+    xmlp1s1s1c1step6.setAttribute("name","Step "+str(xmlstepcount))
+    xmlp1s1s1c1step6.setAttribute("id","1.1.1.1.1."+str(xmlstepcount))
+    xmlp1s1s1case1.appendChild(xmlp1s1s1c1step6)
+
+    xmlp1s1s1c1s6command1 = xmldoc.createElement("command")
+    xmlp1s1s1c1step6.appendChild(xmlp1s1s1c1s6command1)
+    xmlp1s1s1c1s1command1text = xmldoc.createTextNode("makedir")
+    xmlp1s1s1c1s6command1.appendChild(xmlp1s1s1c1s1command1text)
+
+    xmlp1s1s1c1s6params1 = xmldoc.createElement("params")
+    xmlp1s1s1c1step6.appendChild(xmlp1s1s1c1s6params1)
+    
+    xmlp1s1s1c1s6p1param1 = xmldoc.createElement("param")
+    xmlp1s1s1c1s6p1param1.setAttribute("dir","e:\\temp\\lc_apitest")
+    xmlp1s1s1c1s6params1.appendChild(xmlp1s1s1c1s6p1param1)  
+        
+    #execute test case step
+    if((cmp(harness, "STIF") == 0) or (cmp(harness, "stif") == 0) or (cmp(harness, "Stif") == 0)):
+        if((cmp(stiftype, "TESTSCRIPTER") == 0) or (cmp(stiftype, "Testscripter") == 0) or (cmp(stiftype, "testscripter") == 0)):
+            for cfgfiles_ in cfgFileNoPath:
+                xmlstepcount = xmlstepcount + 1
+                xmlp1s1s1c1step = xmldoc.createElement("step")
+                xmlp1s1s1c1step.setAttribute("significant","false")
+                xmlp1s1s1c1step.setAttribute("passrate","100")
+                xmlp1s1s1c1step.setAttribute("enabled","true")
+                xmlp1s1s1c1step.setAttribute("harness",harness)
+                xmlp1s1s1c1step.setAttribute("name","Step "+str(xmlstepcount))
+                xmlp1s1s1c1step.setAttribute("id","1.1.1.1.1."+str(xmlstepcount))
+                xmlp1s1s1case1.appendChild(xmlp1s1s1c1step)
+
+                xmlp1s1s1c1s1command1 = xmldoc.createElement("command")
+                xmlp1s1s1c1step.appendChild(xmlp1s1s1c1s1command1)
+                xmlp1s1s1c1s1command1text = xmldoc.createTextNode("run-cases")
+                xmlp1s1s1c1s1command1.appendChild(xmlp1s1s1c1s1command1text)
+
+                xmlp1s1s1c1s1params1 = xmldoc.createElement("params")
+                xmlp1s1s1c1step.appendChild(xmlp1s1s1c1s1params1)
+                
+                xmlp1s1s1c1s1p1param1 = xmldoc.createElement("param")
+                xmlp1s1s1c1s1p1param1.setAttribute("module","testscripter")
+                xmlp1s1s1c1s1params1.appendChild(xmlp1s1s1c1s1p1param1)
+
+                xmlp1s1s1c1s1p1param2 = xmldoc.createElement("param")
+                xmlp1s1s1c1s1p1param2.setAttribute("filter","*")
+                xmlp1s1s1c1s1params1.appendChild(xmlp1s1s1c1s1p1param2)
+
+                xmlp1s1s1c1s1p1param3 = xmldoc.createElement("param")
+                xmlp1s1s1c1s1p1param3.setAttribute("timeout","3000")
+                xmlp1s1s1c1s1params1.appendChild(xmlp1s1s1c1s1p1param3)
+
+                xmlp1s1s1c1s1p1param4 = xmldoc.createElement("param")
+                xmlp1s1s1c1s1p1param4.setAttribute("testcase-file", CFGTARGETPATH + cfgfiles_)
+                xmlp1s1s1c1s1params1.appendChild(xmlp1s1s1c1s1p1param4)
+
+    #fetch STIF test report
+    xmlstepcount = xmlstepcount + 1
+    xmlp1s1s1c1step6 = xmldoc.createElement("step")
+    xmlp1s1s1c1step6.setAttribute("significant","false")
+    xmlp1s1s1c1step6.setAttribute("passrate","100")
+    xmlp1s1s1c1step6.setAttribute("enabled","true")
+    xmlp1s1s1c1step6.setAttribute("harness",harness)
+    xmlp1s1s1c1step6.setAttribute("name","Step "+str(xmlstepcount))
+    xmlp1s1s1c1step6.setAttribute("id","1.1.1.1.1."+str(xmlstepcount))
+    xmlp1s1s1case1.appendChild(xmlp1s1s1c1step6)
+
+    xmlp1s1s1c1s6command1 = xmldoc.createElement("command")
+    xmlp1s1s1c1step6.appendChild(xmlp1s1s1c1s6command1)
+    xmlp1s1s1c1s1command1text = xmldoc.createTextNode("fetch-log")
+    xmlp1s1s1c1s6command1.appendChild(xmlp1s1s1c1s1command1text)
+
+    xmlp1s1s1c1s6params1 = xmldoc.createElement("params")
+    xmlp1s1s1c1step6.appendChild(xmlp1s1s1c1s6params1)
+    
+    xmlp1s1s1c1s6p1param1 = xmldoc.createElement("param")
+    xmlp1s1s1c1s6p1param1.setAttribute("type","text")
+    xmlp1s1s1c1s6params1.appendChild(xmlp1s1s1c1s6p1param1)
+
+    xmlp1s1s1c1s6p1param2 = xmldoc.createElement("param")
+    xmlp1s1s1c1s6p1param2.setAttribute("delete","true")
+    xmlp1s1s1c1s6params1.appendChild(xmlp1s1s1c1s6p1param2)
+
+    xmlp1s1s1c1s6p1param3 = xmldoc.createElement("param")
+    xmlp1s1s1c1s6p1param3.setAttribute("path","C:\\Logs\\TestFramework\\*")
+    xmlp1s1s1c1s6params1.appendChild(xmlp1s1s1c1s6p1param3)     
+
+    #fetch test module own logs 
+    xmlstepcount = xmlstepcount + 1
+    xmlp1s1s1c1step6 = xmldoc.createElement("step")
+    xmlp1s1s1c1step6.setAttribute("significant","false")
+    xmlp1s1s1c1step6.setAttribute("passrate","100")
+    xmlp1s1s1c1step6.setAttribute("enabled","true")
+    xmlp1s1s1c1step6.setAttribute("harness",harness)
+    xmlp1s1s1c1step6.setAttribute("name","Step "+str(xmlstepcount))
+    xmlp1s1s1c1step6.setAttribute("id","1.1.1.1.1."+str(xmlstepcount))
+    xmlp1s1s1case1.appendChild(xmlp1s1s1c1step6)
+
+    xmlp1s1s1c1s6command1 = xmldoc.createElement("command")
+    xmlp1s1s1c1step6.appendChild(xmlp1s1s1c1s6command1)
+    xmlp1s1s1c1s1command1text = xmldoc.createTextNode("fetch-log")
+    xmlp1s1s1c1s6command1.appendChild(xmlp1s1s1c1s1command1text)
+
+    xmlp1s1s1c1s6params1 = xmldoc.createElement("params")
+    xmlp1s1s1c1step6.appendChild(xmlp1s1s1c1s6params1)
+    
+    xmlp1s1s1c1s6p1param1 = xmldoc.createElement("param")
+    xmlp1s1s1c1s6p1param1.setAttribute("type","text")
+    xmlp1s1s1c1s6params1.appendChild(xmlp1s1s1c1s6p1param1)
+
+    xmlp1s1s1c1s6p1param2 = xmldoc.createElement("param")
+    xmlp1s1s1c1s6p1param2.setAttribute("delete","true")
+    xmlp1s1s1c1s6params1.appendChild(xmlp1s1s1c1s6p1param2)
+
+    xmlp1s1s1c1s6p1param3 = xmldoc.createElement("param")
+    xmlp1s1s1c1s6p1param3.setAttribute("path","e:\\temp\\lc_apitest\\*")
+    xmlp1s1s1c1s6params1.appendChild(xmlp1s1s1c1s6p1param3)
+    
+    #files section
+    xmlfiles = xmldoc.createElement("files")
+    xmltest.appendChild(xmlfiles)
+    for file in filestoinstall:
+        xmlfilesfile1 = xmldoc.createElement("file")
+        if(file[1] == BINARYFILE):
+            xmlfile1text = xmldoc.createTextNode("ATS3Drop\\armv5_urel\\"+file[0])
+            xmlfilesfile1.appendChild(xmlfile1text)
+            xmlfiles.appendChild(xmlfilesfile1)
+        else:
+            xmlfile1text = xmldoc.createTextNode("ATS3Drop\\"+file[0])
+            xmlfilesfile1.appendChild(xmlfile1text)
+            xmlfiles.appendChild(xmlfilesfile1)  
+    #image files in files section
+    for xmlimage in imagestoflash:
+        xmlflashfile = xmldoc.createElement("file")
+        xmlflashfiletext = xmldoc.createTextNode("ATS3Drop\\images\\" + xmlimage)
+        xmlflashfile.appendChild(xmlflashfiletext)
+        xmlfiles.appendChild(xmlflashfile)
+
+    #post action: send logs by email
+    xmlpostaction = xmldoc.createElement("postAction")
+    xmltest.appendChild(xmlpostaction)
+    xmlactiontype = xmldoc.createElement("type")
+    xmlpostaction.appendChild(xmlactiontype)
+    xmlactiontext = xmldoc.createTextNode("SendEmailAction")
+    xmlactiontype.appendChild(xmlactiontext)
+
+    xmlsendemailparams = xmldoc.createElement("params")
+    xmlpostaction.appendChild(xmlsendemailparams)
+    
+    xmlsendemailparam = xmldoc.createElement("param")
+    xmlsendemailparam.setAttribute("name", "type")
+    xmlsendemailparam.setAttribute("value", "ATS3_REPORT")
+    xmlsendemailparams.appendChild(xmlsendemailparam)
+ 
+    xmlsendemailparam = xmldoc.createElement("param")
+    xmlsendemailparam.setAttribute("name", "to")
+    xmlsendemailparam.setAttribute("value","ext-aminul.2.islam@nokia.com;yongjiang.yu@nokia.com")
+    xmlsendemailparams.appendChild(xmlsendemailparam)
+
+    xmlsendemailparam = xmldoc.createElement("param")
+    xmlsendemailparam.setAttribute("name", "subject")
+    xmlsendemailparam.setAttribute("value","LC API test report")
+    xmlsendemailparams.appendChild(xmlsendemailparam)
+    
+    xmlsendemailparam = xmldoc.createElement("param")
+    xmlsendemailparam.setAttribute("name", "unzip")
+    xmlsendemailparam.setAttribute("value","true")
+    xmlsendemailparams.appendChild(xmlsendemailparam)
+    
+    xmlsendemailparam = xmldoc.createElement("param")
+    xmlsendemailparam.setAttribute("name", "send-files")
+    xmlsendemailparam.setAttribute("value","true")
+    xmlsendemailparams.appendChild(xmlsendemailparam)
+
+    xmlsendemailparam = xmldoc.createElement("param")
+    xmlsendemailparam.setAttribute("name", "report-dir")
+    xmlsendemailparam.setAttribute("value","\\\\jamppa\\ATS\\filestore\\api_auto_test_logs")
+    xmlsendemailparams.appendChild(xmlsendemailparam)    
+
+    # Print our newly created XML and create test.xml
+    print xmldoc.toprettyxml(indent="     ")
+    xmlfile = open(Directory + "\\test.xml", "w")
+    xmldoc.writexml(xmlfile, indent="     ", addindent="     ", newl="\n")
+    xmlfile.close()
+
+    #create the testdrop.zip file
+    os.chdir(Directory)    
+
+    ret = os.system("zip -R testdrop.zip test.xml  \".\\ATS3drop\\*\" \".\\ATS3drop\\armv5_urel\\*\" \".\\ATS3drop\\images\\*\"")
+    if(ret != 0):
+        print "Error : unable to create test.xml"
+        sys.exit()
+
+print "\n Test Drop Sucessfully created in "+Directory