Home | History | Annotate | Download | only in pktgen
      1 import os, logging
      2 from autotest_lib.client.bin import test, utils
      3 from autotest_lib.client.common_lib import error
      4 
      5 class pktgen(test.test):
      6     version = 1
      7 
      8     def execute(self, eth='eth0', count=50000, clone_skb=1,
      9                 dst_ip='192.168.210.210', dst_mac='01:02:03:04:05:07',
     10                 num_iterations=1):
     11         if not os.path.exists('/proc/net/pktgen'):
     12             utils.system('/sbin/modprobe pktgen')
     13         if not os.path.exists('/proc/net/pktgen'):
     14             raise error.TestError('pktgen not loaded')
     15 
     16         for i in xrange(num_iterations):
     17             logging.info('Adding %s (iteration %d)' % (eth, i))
     18             self.pgdev = '/proc/net/pktgen/kpktgend_0'
     19 
     20             self.pgset('rem_device_all')
     21             self.pgset('add_device ' + eth)
     22             self.pgset('max_before_softirq 10000')
     23 
     24             # Configure the individual devices
     25             logging.info('Configuring %s (iteration %d)' % (eth, i))
     26 
     27             self.ethdev='/proc/net/pktgen/' + eth
     28             self.pgdev=self.ethdev
     29 
     30             if clone_skb:
     31                 self.pgset('clone_skb %d' % (count))
     32             self.pgset('min_pkt_size 60')
     33             self.pgset('max_pkt_size 60')
     34             self.pgset('dst ' + dst_ip)
     35             self.pgset('dst_mac ' + dst_mac)
     36             self.pgset('count %d' % (count))
     37 
     38             # Time to run
     39             self.pgdev='/proc/net/pktgen/pgctrl'
     40             self.pgset('start')
     41 
     42             output = os.path.join(self.resultsdir, eth)
     43             logging.info('Completed %s (iteration %d)' % (eth, i))
     44             utils.system('cp %s %s_%05d' % (self.ethdev, output, i))
     45 
     46     def pgset(self, command):
     47         file = open(self.pgdev, 'w')
     48         file.write(command + '\n');
     49         file.close
     50 
     51         if not utils.grep('Result: OK', self.pgdev):
     52             if not utils.grep('Result: NA', self.pgdev):
     53                 utils.system('cat ' + self.pgdev)
     54