Beispiel #1
0
    def do_source_sink(self, cmd):
        try:
            secs = int(cmd[1])
            if secs > MAX_SOURCESINK_TIME:
                secs = MAX_SOURCESINK_TIME
                self.wfile.write("warn Using test time %d instead of %s\n" %
                                 (secs, cmd[1]))
        except:
            raise ControlProtocolError("Bad %s arguments" % cmd[0])

        ts = Traffic.TrafficSock()
        self.test_start_time = time.time()
        self.kill_test = self.kill_source_sink
        self.kill_test_args = (ts, )
        if not self.test_list_add():
            self.kill_test = None
            self.kill_test_args = None
            return
        self.test_start_time = time.time(
        )  # don't short test their queueing time

        try:
            try:
                testrange_bind(ts.sock, self.request.getsockname()[0])
                ts.sock.listen(1)
                self.wfile.write("listen %s %d\n" %
                                 (ts.sock.getsockname()[0:2]))
            except Exception, e:
                self.wfile.write("warn While binding socket, got error: %s\n" %
                                 e)
                raise e

            try:
                ts.passive_open(self.client_address[0])
                if cmd[0] == "test_sink":
                    ts.sink(maxtime=secs)
                else:
                    ts.source(maxtime=secs)
                ts.sock.close()
            except:
                self.wfile.write("warn Got exception while running test\n")
            self.wfile.write("report none\n")
Beispiel #2
0
        print("Thread test start %s (queue time %d)" % (relative, qtime))

        # open a per run logfile
        logf = open(log_file + ".out", "w")
        logf.write("Start")

        pid = -1
        try:

            (r, w) = os.pipe()
            pid = os.fork()
            if pid == 0:
                try:
                    # Create a socket on an ephemeral port for pathdiag
                    # we do this first, so print goes to the shared log
                    ts = Traffic.TrafficSock()
                    testrange_bind(ts.sock, self.request.getsockname()[0])

                    # Set up stdout/err to the pipe.  All further output goes to the cleint
                    os.dup2(w, 1)
                    os.dup2(w, 2)
                    os.close(w)

                    # listen and tell the client
                    ts.sock.listen(1)
                    self.wfile.write("listen %s %d\n" %
                                     (ts.sock.getsockname()[0:2]))
                    ts.passive_open(self.client_address[0])

                    # don't hold the listen FD in case we are going to be restarted
                    #					os.close(self.socket.fileno())