diff options
author | Marvin Liu <yong.liu@intel.com> | 2015-07-09 17:07:39 +0800 |
---|---|---|
committer | Marvin Liu <yong.liu@intel.com> | 2015-07-10 10:47:47 +0800 |
commit | 249c05fd7ff2b7bd9d4a473b3deafeab0d968c92 (patch) | |
tree | 310ac18779f405bf6db4eac37a05ea19fbd88783 | |
parent | 0aca9e7582f8db0e18479bd6affc383c06de488f (diff) |
fix bug that read_cache option not work
Cache file only can save string object, so skip save port net device object.
In prerequisties function, we will instantiate net device and save it into
ports_info structure.
Cache file now saved in output folder.
Signed-off-by: Marvin Liu <yong.liu@intel.com>
-rw-r--r-- | framework/dts.py | 3 | ||||
-rw-r--r-- | framework/dut.py | 41 | ||||
-rw-r--r-- | framework/tester.py | 23 |
3 files changed, 54 insertions, 13 deletions
diff --git a/framework/dts.py b/framework/dts.py index 2e67e40..6d8b950 100644 --- a/framework/dts.py +++ b/framework/dts.py @@ -235,7 +235,8 @@ def dts_crbs_init(crbInst, skip_setup, read_cache, project, base_dir, nic, virtt """ global dut global tester - serializer.set_serialized_filename('.%s.cache' % crbInst['IP']) + serializer.set_serialized_filename(FOLDERS['Output'] + + '/.%s.cache' % crbInst['IP']) serializer.load_from_file() dut = get_project_obj(project, Dut, crbInst, serializer) diff --git a/framework/dut.py b/framework/dut.py index 8c83075..0f523c0 100644 --- a/framework/dut.py +++ b/framework/dut.py @@ -44,8 +44,6 @@ from virt_resource import VirtResource from utils import RED - - class Dut(Crb): """ @@ -275,7 +273,6 @@ class Dut(Crb): if total_huge_pages != arch_huge_pages: self.set_huge_pages(arch_huge_pages) - self.mount_huge_pages() self.hugepage_path = self.strip_hugepage_path() @@ -541,19 +538,20 @@ class Dut(Crb): port_info['ipv6'] = ipv6 def load_serializer_ports(self): - self.ports_info = [] cached_ports_info = self.serializer.load(self.PORT_INFO_CACHE_KEY) if cached_ports_info is None: return - for port in cached_ports_info: - self.ports_info.append({'pci': port['pci'], 'type': port['type'], - 'numa': port['numa']}) + + self.ports_info = cached_ports_info def save_serializer_ports(self): cached_ports_info = [] for port in self.ports_info: - cached_ports_info.append({'pci': port['pci'], 'type': port['type'], - 'numa': port['numa']}) + port_info = {} + for key in port.keys(): + if type(port[key]) is str: + port_info[key] = port[key] + cached_ports_info.append(port_info) self.serializer.save(self.PORT_INFO_CACHE_KEY, cached_ports_info) def scan_ports(self): @@ -562,11 +560,35 @@ class Dut(Crb): """ if self.read_cache: self.load_serializer_ports() + self.scan_ports_cached() if not self.read_cache or self.ports_info is None: self.scan_ports_uncached() self.save_serializer_ports() + def scan_ports_cached(self): + """ + Scan cached ports, instantiate tester port + """ + scan_ports_cached = getattr(self, 'scan_ports_cached_%s' % self.get_os_type()) + return scan_ports_cached() + + def scan_ports_cached_linux(self): + """ + Scan Linux ports and instantiate tester port + """ + if self.ports_info is None: + return + + for port_info in self.ports_info: + port = NetDevice(self, port_info['pci'], port_info['type']) + intf = port.get_interface_name() + + self.logger.info("DUT cached: [000:%s %s] %s" % (port_info['pci'], + port_info['type'], intf)) + + port_info['port'] = port + def scan_ports_uncached(self): """ Scan ports and collect port's pci id, mac adress, ipv6 address. @@ -700,7 +722,6 @@ class Dut(Crb): def get_vm_core_list(self): return VMCORELIST[self.crb['VM CoreList']] - def load_portconf(self): """ Load port configurations for ports_info. If manually configured infor diff --git a/framework/tester.py b/framework/tester.py index ce136e4..35581c8 100644 --- a/framework/tester.py +++ b/framework/tester.py @@ -65,7 +65,8 @@ class Tester(Crb): self.NAME, self.get_password()) self.session.init_log(self.logger) self.alt_session = SSHConnection(self.get_ip_address(), - self.NAME + '_alt', self.get_password()) + self.NAME + '_alt', + self.get_password()) self.alt_session.init_log(self.logger) self.bgProcIsRunning = False @@ -199,6 +200,9 @@ class Tester(Crb): """ Restore Linux interfaces. """ + if self.skip_setup: + return + self.send_expect("modprobe igb", "# ", 20) self.send_expect("modprobe ixgbe", "# ", 20) self.send_expect("modprobe e1000e", "# ", 20) @@ -218,7 +222,6 @@ class Tester(Crb): sleep(2) def load_serializer_ports(self): - self.ports_info = [] cached_ports_info = self.serializer.load(self.PORT_INFO_CACHE_KEY) if cached_ports_info is None: return @@ -243,6 +246,7 @@ class Tester(Crb): """ if self.read_cache: self.load_serializer_ports() + self.scan_ports_cached() if not self.read_cache or self.ports_info is None: self.scan_ports_uncached() @@ -253,6 +257,21 @@ class Tester(Crb): for port_info in self.ports_info: self.logger.info(port_info) + def scan_ports_cached(self): + if self.ports_info is None: + return + + for port_info in self.ports_info: + if port_info['type'] == 'ixia': + continue + + port = NetDevice(self, port_info['pci'], port_info['type']) + intf = port.get_interface_name() + + self.logger.info("Tester cached: [000:%s %s] %s" % ( + port_info['pci'], port_info['type'], intf)) + port_info['port'] = port + def scan_ports_uncached(self): """ Return tester port pci/mac/interface information. |