diff --git a/TestON/examples/ExperimentTest/.svn/entries b/TestON/examples/ExperimentTest/.svn/entries
new file mode 100644
index 0000000..3b49413
--- /dev/null
+++ b/TestON/examples/ExperimentTest/.svn/entries
@@ -0,0 +1,171 @@
+9
+
+dir
+65
+svn://192.168.150.61/OpenFlow/examples/ExperimentTest
+svn://192.168.150.61/OpenFlow
+
+
+
+2012-12-05T18:46:42.405397Z
+65
+paxterra
+
+
+svn:special svn:externals svn:needs-lock
+
+
+
+
+
+
+
+
+
+
+
+8b1d8634-a80c-44fc-ab7b-cc53e6f68013
+
+
+
+
+
+
+0
+
+ExperimentTest.params
+file
+
+
+
+
+2012-12-05T16:08:53.000000Z
+fe91cb1fd12f04eaca9a2fb7d2978b6f
+2012-12-05T18:46:42.405397Z
+65
+paxterra
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+264
+
+ExperimentTest.py
+file
+
+
+
+
+2012-12-05T16:51:09.000000Z
+bcdbffbd0f271e3673c6feb7d8bdc076
+2012-12-05T18:46:42.405397Z
+65
+paxterra
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1812
+
+ExperimentTest.topo
+file
+
+
+
+
+2012-12-05T16:08:53.000000Z
+de74c44cd5254e711cff2d707943d251
+2012-12-05T18:46:42.405397Z
+65
+paxterra
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+776
+
+__init__.py
+file
+
+
+
+
+2012-12-05T16:08:53.000000Z
+d41d8cd98f00b204e9800998ecf8427e
+2012-12-05T18:46:42.405397Z
+65
+paxterra
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+0
+
diff --git a/TestON/examples/ExperimentTest/.svn/format b/TestON/examples/ExperimentTest/.svn/format
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/TestON/examples/ExperimentTest/.svn/format
@@ -0,0 +1 @@
+9
diff --git a/TestON/examples/ExperimentTest/.svn/text-base/ExperimentTest.params.svn-base b/TestON/examples/ExperimentTest/.svn/text-base/ExperimentTest.params.svn-base
new file mode 100644
index 0000000..3b97252
--- /dev/null
+++ b/TestON/examples/ExperimentTest/.svn/text-base/ExperimentTest.params.svn-base
@@ -0,0 +1,9 @@
+[PARAMS]
+    'testcases' = '[1,2]'
+    'mail' = 'anilkumar.s@paxterrasolutions.com,paxweb@paxterrasolutions.com'
+    #'log_dir' = '/home/user/Desktop/openflow_logs/'
+    [[CASE1]]
+        'destination' = 'h2'
+        [[[STEP1]]]
+            'host' = 'h2'
+        
diff --git a/TestON/examples/ExperimentTest/.svn/text-base/ExperimentTest.py.svn-base b/TestON/examples/ExperimentTest/.svn/text-base/ExperimentTest.py.svn-base
new file mode 100644
index 0000000..1d87e3e
--- /dev/null
+++ b/TestON/examples/ExperimentTest/.svn/text-base/ExperimentTest.py.svn-base
@@ -0,0 +1,36 @@
+class ExperimentTest:
+    '''
+    Testing of the Experimental Mode 
+    '''
+    
+    def __init__(self):
+        self.default = ""
+                
+    def CASE1(self,main):
+        '''
+        Testing the configuration of the host by using checkIP functionof Mininet driver
+        '''
+        main.EXPERIMENTAL_MODE = main.TRUE
+        main.case("Testing the configuration of the host")
+        main.step("Host IP Checking using checkIP")
+        result = main.Mininet1.checkIP(main.params['CASE1']['destination'])
+        main.step("Verifying the result")
+        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Host h2 IP address configured",onfail="Host h2 IP address didn't configured") 
+        main.step("Calling Non Existing API for Experimental Mode")  
+        testReturn = main.POX2.verify_flow(returns=main.TRUE)
+        utilities.assert_equals(expect=main.TRUE,actual=testReturn,onpass="Host h2 IP address configured",onfail="Host h2 IP address didn't configured")
+
+    def CASE2(self,main):
+        '''
+        Testing of the reachability of the hosts by using pingall of Mininet driver
+        '''
+        main.EXPERIMENTAL_MODE = main.TRUE
+        main.case("Testing Reachabilty of all the hosts")
+        main.step("Checking Hosts reachability by using pingall")
+        result = main.Mininet1.pingall()
+        main.step("Verifying the result")
+        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="All hosts are reacchable",onfail="Hosts are not reachable")
+        main.step("Calling Non Existing API for Experimental Mode")  
+        testReturn = main.Mininet1.verify_flow(returns=main.TRUE)
+        utilities.assert_equals(expect=main.TRUE,actual=testReturn,onpass="Host h2 IP address configured",onfail="Host h2 IP address didn't configured")
+            
diff --git a/TestON/examples/ExperimentTest/.svn/text-base/ExperimentTest.topo.svn-base b/TestON/examples/ExperimentTest/.svn/text-base/ExperimentTest.topo.svn-base
new file mode 100644
index 0000000..74c0db9
--- /dev/null
+++ b/TestON/examples/ExperimentTest/.svn/text-base/ExperimentTest.topo.svn-base
@@ -0,0 +1,23 @@
+[TOPOLOGY]    
+
+    [[COMPONENT]]
+        [[["Mininet1"]]]
+            'host' = '192.168.56.101'
+            'user' = 'openflow'
+            'password' = 'openflow'
+            'type' = "Mininet"
+            [[[["COMPONENTS"]]]]
+                # Specify the Option for mininet
+                'topo' = 'single'
+                'topocount' = '3'
+                'switch' = 'ovsk'
+                'controller' = 'remote'
+        [[["POX2"]]]
+            'host' = '192.168.56.101'
+            'user' = 'openflow'
+            'password' = 'openflow'
+            'type' = 'POX'
+            'no-cli' = '1' #or '0' if want to run in cli mode
+            [[[["COMPONENTS"]]]]
+                'pox_lib_location' = "/home/openflow/pox/"
+                [[[[["samples.of_tutorial"]]]]]
diff --git a/TestON/examples/ExperimentTest/.svn/text-base/__init__.py.svn-base b/TestON/examples/ExperimentTest/.svn/text-base/__init__.py.svn-base
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/examples/ExperimentTest/.svn/text-base/__init__.py.svn-base
diff --git a/TestON/examples/ExperimentTest/ExperimentTest.ospk b/TestON/examples/ExperimentTest/ExperimentTest.ospk
new file mode 100644
index 0000000..bd70165
--- /dev/null
+++ b/TestON/examples/ExperimentTest/ExperimentTest.ospk
@@ -0,0 +1,24 @@
+CASE 1
+
+    EXPERIMENTAL MODE ON
+    NAME "Testing the configuration of the host"
+    STEP "Host IP Checking using checkIP"
+    STORE ON Mininet1 DO checkIP USING CASE['destination'] IN result
+    STEP "Verifying the result"
+    ASSERT result EQUALS main.TRUE ONPASS "Host h2 IP address configured" ONFAIL "Host h2 IP address didn't configured"
+    STEP "Calling Non Existing API for Experimental Mode"
+    STORE ON POX2 DO verify_flow USING returns AS main.TRUE IN testReturn
+    ASSERT testRetun EQUALS main.TRUE ONPASS "Experimental Mode Passed" ONFAIL "Experimental Mode failed"
+
+CASE 2
+
+    EXPERIMENTAL MODE ON
+    NAME "Testing Reachabilty of all the hosts"
+    STEP "Checking Hosts reachability by using pingall"
+    STORE ON Mininet1 DO pingall IN result
+    STEP "Verifying the result"
+    ASSERT result EQUALS main.TRUE ONPASS "Host h2 IP address configured" ONFAIL "Host h2 IP address didn't configured"
+    STEP "Calling Non Existing API for Experimental Mode"
+    STORE ON Mininet1 DO verify_flow USING returns AS main.TRUE IN testReturn
+    ASSERT testRetun EQUALS main.TRUE ONPASS "Experimental Mode Passed" ONFAIL "Experimental Mode failed"
+                                                      
diff --git a/TestON/examples/ExperimentTest/ExperimentTest.params b/TestON/examples/ExperimentTest/ExperimentTest.params
new file mode 100644
index 0000000..30755e5
--- /dev/null
+++ b/TestON/examples/ExperimentTest/ExperimentTest.params
@@ -0,0 +1,11 @@
+<PARAMS>
+    <testcases> 1,2 </testcases>
+    <mail> anilkumar.s@paxterrasolutions.com,paxweb@paxterrasolutions.com </mail>
+    #'log_dir' = '/home/user/Desktop/openflow_logs/'
+    <CASE1>
+        <destination> h2 </destination>
+        <STEP1>
+            <host> h2 </host>
+         </STEP1>
+    </CASE1> 
+</PARAMS>
\ No newline at end of file
diff --git a/TestON/examples/ExperimentTest/ExperimentTest.py b/TestON/examples/ExperimentTest/ExperimentTest.py
new file mode 100644
index 0000000..7630703
--- /dev/null
+++ b/TestON/examples/ExperimentTest/ExperimentTest.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+''' 
+Created on 26-Nov-2012
+    
+@author: Raghav Kashyap(raghavkashyap@paxterrasolutions.com)
+
+
+    TestON is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 2 of the License, or
+    (at your option) any later version.
+
+    TestON is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with TestON.  If not, see <http://www.gnu.org/licenses/>.		
+
+Testing of the Experimental Mode
+
+ofautomation>run ExperimentTest example 1
+    will execute this example.
+'''
+class ExperimentTest:
+    '''
+    Testing of the Experimental Mode 
+    
+    '''
+    
+    def __init__(self):
+        self.default = ""
+                
+    def CASE1(self,main):
+        '''
+        Testing the configuration of the host by using checkIP functionof Mininet driver
+        '''
+        main.EXPERIMENTAL_MODE = main.TRUE
+        main.case("Testing the configuration of the host")
+        main.step("Host IP Checking using checkIP")
+        result = main.Mininet1.checkIP(main.params['CASE1']['destination'])
+        main.step("Verifying the result")
+        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Host h2 IP address configured",onfail="Host h2 IP address didn't configured") 
+        main.step("Calling Non Existing API for Experimental Mode")  
+        testReturn = main.POX2.verify_flow(returns=main.TRUE)
+        utilities.assert_equals(expect=main.TRUE,actual=testReturn,onpass="Host h2 IP address configured",onfail="Host h2 IP address didn't configured")
+
+    def CASE2(self,main):
+        '''
+        Testing of the reachability of the hosts by using pingall of Mininet driver
+        '''
+        main.EXPERIMENTAL_MODE = main.TRUE
+        main.case("Testing Reachabilty of all the hosts")
+        main.step("Checking Hosts reachability by using pingall")
+        result = main.Mininet1.pingall()
+        main.step("Verifying the result")
+        utilities.assert_equals(expect=main.TRUE,actual=result,onpass="All hosts are reacchable",onfail="Hosts are not reachable")
+        main.step("Calling Non Existing API for Experimental Mode")  
+        testReturn = main.Mininet1.verify_flow(returns=main.TRUE)
+        utilities.assert_equals(expect=main.TRUE,actual=testReturn,onpass="Host h2 IP address configured",onfail="Host h2 IP address didn't configured")
+            
diff --git a/TestON/examples/ExperimentTest/ExperimentTest.topo b/TestON/examples/ExperimentTest/ExperimentTest.topo
new file mode 100644
index 0000000..618e442
--- /dev/null
+++ b/TestON/examples/ExperimentTest/ExperimentTest.topo
@@ -0,0 +1,28 @@
+<TOPOLOGY>    
+
+    <COMPONENT>
+        <Mininet1>
+            <host> 192.168.56.101 </host>
+            <user> = openflow </user>
+            <password> openflow </password>
+            <type> MininetCliDriver </type>
+            <COMPONENTS>
+                # Specify the Option for mininet
+                <topo> single </topo>
+                <topocount> 3 </topocount>
+                <switch> ovsk </switch>
+                <controller> remote </controller>
+            </COMPONENTS>    
+        <POX2>
+            <host> 192.168.56.101 </host>
+            <user> openflow </user>
+            <password> openflow </password>
+            <type> PoxCliDriver </type>
+            <no-cli> 1 </no-cli>         #or '0' if want to run in cli mode
+            <COMPONENTS>
+                <pox_lib_location> /home/openflow/pox/ </pox_lib_location>
+                <samples.of_tutorial></samples.of_tutorial>
+            </COMPONENTS>
+        </POX2>
+   </COMPONENT> 
+</TOPOLOGY>
\ No newline at end of file
diff --git a/TestON/examples/ExperimentTest/__init__.py b/TestON/examples/ExperimentTest/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/examples/ExperimentTest/__init__.py
