Exemplo n.º 1
0
def Setup(tc):

    tc.skip = False
    if tc.selected:
        tc.workload_pairs = tc.selected
    else:
        if tc.args.type == 'local_only':
            tc.workload_pairs = api.GetLocalWorkloadPairs()
        else:
            tc.workload_pairs = api.GetRemoteWorkloadPairs()

        tc.workload_pairs = tc.workload_pairs[:1]

    if len(tc.workload_pairs) == 0:
        api.Logger.info("Skipping Testcase due to no workload pairs.")
        tc.skip = True

    if getattr(tc.args, 'vmotion_enable', False):
        wloads = []
        # collecting all server
        for wl_pair in tc.workload_pairs:
            wloads.append(wl_pair[1])

        vmotion_utils.PrepareWorkloadVMotion(tc, wloads)

    #Have to fix it later.
    return api.types.status.SUCCESS
Exemplo n.º 2
0
def Setup(tc):
    tc.skip = False

    if tc.args.type == 'local_only':
        tc.workload_pairs = api.GetLocalWorkloadPairs()
    else:
        tc.workload_pairs = api.GetRemoteWorkloadPairs()

    if len(tc.workload_pairs) == 0:
        api.Logger.info("Skipping Testcase due to no workload pairs.")
        tc.skip = True

    if api.GetConfigNicMode() == 'hostpin' and tc.iterators.ipaf == 'ipv6':
        api.Logger.info("Skipping Testcase: IPv6 not supported in hostpin mode.")
        tc.skip = True

    if getattr(tc.args, 'vmotion_enable', False):
        wloads = []
        for idx, pair in enumerate(tc.workload_pairs):
            if idx % 2:
                continue
            w2 = pair[1]
            wloads.append(w2)
        vmotion_utils.PrepareWorkloadVMotion(tc, wloads)

    return api.types.status.SUCCESS
Exemplo n.º 3
0
def Setup(tc):
    tc.workload_pairs = __get_workload_pairs()
    if getattr(tc.args, 'vmotion_enable', False):
        wloads = []
        for pair in tc.workload_pairs:
            wloads.append(pair[1])
        vmotion_utils.PrepareWorkloadVMotion(tc, wloads)

    return api.types.status.SUCCESS
Exemplo n.º 4
0
def Setup(tc):
    api.Logger.info("Setup.")
    tc.pcap_file_name = None
    tc.dir_path = os.path.dirname(os.path.realpath(__file__))
    tc.test_mss = 900
    if tc.iterators.kind == "remote":
        pairs = api.GetRemoteWorkloadPairs()
        if not pairs:
            api.Logger.info("no remtote eps")
            return api.types.status.SUCCESS
    else:
        pairs = api.GetLocalWorkloadPairs()

    tc.resp_flow = getattr(tc.args, "resp_flow", 0)
    tc.cmd_cookies = {}
    req = api.Trigger_CreateExecuteCommandsRequest(serial=True)

    if pairs[0][0].IsNaples():
        tc.client, tc.server = pairs[0]
    else:
        tc.server, tc.client = pairs[0]

    fullpath = tc.dir_path + '/' + "scapy_3way.py"
    resp = api.CopyToWorkload(tc.server.node_name, tc.server.workload_name,
                              [fullpath])
    resp = api.CopyToWorkload(tc.client.node_name, tc.client.workload_name,
                              [fullpath])

    cmd_cookie = start_nc_server(tc.server, "1237")
    add_command(req, tc, 'server', tc.server, cmd_cookie, True)

    ret = __add_remove_tcp_drop_rule(tc.client)
    if ret != api.types.status.SUCCESS:
        api.Logger.error(
            f"Failed to drop the drop rule on {tc.client.workload_name}")
        return ret

    #start session
    cmd_cookie = "sudo -E python3 ./scapy_3way.py {} {}".format(
        tc.client.ip_address, tc.server.ip_address)
    api.Trigger_AddCommand(req, tc.client.node_name, tc.client.workload_name,
                           cmd_cookie, False)

    cmd_cookie = "/nic/bin/halctl show session --dstport 1237 --dstip {} --yaml".format(
        tc.server.ip_address)
    add_command(req, tc, 'show before', tc.client, cmd_cookie, naples=True)
    tc.first_resp = api.Trigger(req)
    cmd = tc.first_resp.commands[-1]
    api.PrintCommandResults(cmd)

    tc.pre_ctrckinf = get_conntrackinfo(cmd)

    if getattr(tc.args, 'vmotion_enable', False):
        vmotion_utils.PrepareWorkloadVMotion(tc, [tc.client])

    return api.types.status.SUCCESS
Exemplo n.º 5
0
def Setup(tc):
    tc.workload_pairs = api.GetRemoteWorkloadPairs()
    agent_api.DeleteSgPolicies()

    if getattr(tc.args, 'vmotion_enable', False):
        wloads = []
        for pair in tc.workload_pairs:
            wloads.append(pair[1])
        vmotion_utils.PrepareWorkloadVMotion(tc, wloads)

    return api.types.status.SUCCESS
Exemplo n.º 6
0
def Setup(tc):
    if SetTestSettings(tc) is not api.types.status.SUCCESS:
        return api.types.status.FAILURE
    if utils.SetSessionLimit('all', 0) is not api.types.status.SUCCESS:
        return api.types.status.FAILURE

    (server, client) = utils.GetServerClientSinglePair(kind=tc.iterators.kind)
    if server is None:
        return api.types.status.FAILURE
    tc.wc_server = server
    tc.wc_client = client
    if getattr(tc.args, 'vmotion_enable', False):
        wloads = [server]
        vmotion_utils.PrepareWorkloadVMotion(tc, wloads)

    return api.types.status.SUCCESS
Exemplo n.º 7
0
def Setup(tc):
    api.Logger.info("Setup.")
    if tc.iterators.kind == "remote":
        pairs = api.GetRemoteWorkloadPairs()
        if not pairs:
            api.Logger.info("no remtote eps")
            return api.types.status.SUCCESS
    else:
        pairs = api.GetLocalWorkloadPairs()
    tc.cmd_cookies = {}
    req = api.Trigger_CreateExecuteCommandsRequest(serial=True)

    #for w1,w2 in pairs:
    if pairs[0][0].IsNaples():
        tc.client, tc.server = pairs[0]
    else:
        tc.server, tc.client = pairs[0]
    cmd_cookie = "nc -l 1234"
    api.Trigger_AddCommand(req,
                           tc.server.node_name,
                           tc.server.workload_name,
                           cmd_cookie,
                           background=True)
    tc.cmd_cookies['server'] = cmd_cookie

    cmd_cookie = "nc {} 1234 -p 52252".format(tc.server.ip_address)
    api.Trigger_AddCommand(req,
                           tc.client.node_name,
                           tc.client.workload_name,
                           cmd_cookie,
                           background=True)
    tc.cmd_cookies['client'] = cmd_cookie

    cmd_cookie = "/nic/bin/halctl show session --dstport 1234 --dstip {} --yaml".format(
        tc.server.ip_address)
    api.Trigger_AddNaplesCommand(req, tc.client.node_name, cmd_cookie)
    tc.setup_cmd_resp = api.Trigger(req)

    cmd = tc.setup_cmd_resp.commands[-1]
    api.PrintCommandResults(cmd)
    tc.pre_ctrckinf = get_conntrackinfo(cmd)
    if getattr(tc.args, 'vmotion_enable', False):
        vmotion_utils.PrepareWorkloadVMotion(tc, [tc.client])

    return api.types.status.SUCCESS
Exemplo n.º 8
0
def Setup(tc):
    tc.cancel = False
    tc.workloadPeers = {}
    tc.events = []
    tc.nodes = api.GetNaplesHostnames()
    tc.flap_port_count = getattr(tc.args, "flap_port_count", 1)
    tc.mem_leak_test = getattr(tc.args, "mem_leak_test", False)
    tc.mem_incr_threshold = getattr(tc.args, "mem_incr_threshold", 1)
    tc.bg_trigger_cmd_timeout = 200

    if enable_memory_trim:
        # Reclaim all free memory before start & end of test
        # to find the amount of memory leaked after the test
        execHalMemTrimCmd(tc)

    try:
        findWorkloadPeers(tc)

        if tc.mem_leak_test:
            triggerTechSupport(tc)
            memStatsObjClient.InitNodesForMemUsageStats()

        ret = connectTrex(tc)
        if ret != api.types.status.SUCCESS:
            return ret

        ret = startTrex(tc)
        if ret != api.types.status.SUCCESS:
            return ret
    except Exception as e:
        traceback.print_exc()
        api.Logger.error("Failed to trigger the session scale : %s" % (e))
        cleanup(tc)
        return api.types.status.FAILURE

    if getattr(tc.args, 'vmotion_enable', False):
        wloads = []
        for idx, wl in enumerate(tc.workloadPeers.keys()):
            if idx % 2 == 0:
                w2 = pair[1]
                wloads.append(w2)
        vmotion_utils.PrepareWorkloadVMotion(tc, wloads)

    return api.types.status.SUCCESS
Exemplo n.º 9
0
def Setup(tc):
    tc.seed = random.randrange(sys.maxsize)
    api.Logger.info("Using seed : %s" % (tc.seed))
    tc.serverHandle = None
    tc.clientHandle = None
    __modify_security_profile(tc)
    utils.clearNaplesSessions()
    chooseWorkload(tc)
    server, client = tc.workload_pair[0], tc.workload_pair[1]
    api.Logger.info("Server: %s(%s)(%s) <--> Client: %s(%s)(%s)" %\
                    (server.workload_name, server.ip_address,
                     server.mgmt_ip, client.workload_name,
                     client.ip_address, client.mgmt_ip))
    try:
        tc.serverHandle = TRexIotaWrapper(server,
                                          role="server",
                                          gw=client.ip_address)
        tc.clientHandle = TRexIotaWrapper(client,
                                          role="client",
                                          gw=server.ip_address)

        tc.serverHandle.connect()
        tc.clientHandle.connect()

        tc.serverHandle.reset()
        tc.clientHandle.reset()

        profile_path = getProfilePath(tc)
        tc.serverHandle.load_profile(getProfilePath(tc), getTunables(tc))
        tc.clientHandle.load_profile(getProfilePath(tc), getTunables(tc))

    except Exception as e:
        traceback.print_exc()
        api.Logger.info("Failed to setup TRex topology: %s" % e)
        cleanup(tc)
        return api.types.status.FAILURE

    if getattr(tc.args, 'vmotion_enable', False):
        wloads = []
        vmotion_utils.PrepareWorkloadVMotion(tc, [server])

    return api.types.status.SUCCESS
Exemplo n.º 10
0
def Setup(tc):
    tc.server_port = api.AllocateTcpPort()
    tc.client_port = api.AllocateTcpPort()
    api.Logger.info("Setup.")
    if tc.iterators.kind == "remote":
        pairs = api.GetRemoteWorkloadPairs()
        if not pairs:
            api.Logger.info("no remtote eps")
            return api.types.status.SUCCESS
    else:
        pairs = api.GetLocalWorkloadPairs()

    tc.resp_flow = getattr(tc.args, "resp_flow", 0)
    tc.cmd_cookies = {}
    req = api.Trigger_CreateExecuteCommandsRequest(serial = True)

    #for w1,w2 in pairs:
    if pairs[0][0].IsNaples():
        tc.client,tc.server = pairs[0]
    else:
        tc.server,tc.client = pairs[0]
    
    cmd_cookie = start_nc_server(tc.server, tc.server_port)
    add_command(req, tc, 'server', tc.server, cmd_cookie, True) 


    cmd_cookie = start_nc_client(tc.server, tc.client_port, tc.server_port)
    add_command(req, tc, 'client', tc.client, cmd_cookie, True)
       
    cmd_cookie = "/nic/bin/halctl show session --dstport {} --dstip {} --yaml".format(tc.server_port, tc.server.ip_address)
    add_command(req, tc, 'show before', tc.client, cmd_cookie, naples=True)

    
    tc.setup_cmd_resp = api.Trigger(req)
    cmd = tc.setup_cmd_resp.commands[-1] 
    api.PrintCommandResults(cmd)
    tc.pre_ctrckinf = get_conntrackinfo(cmd)
    if getattr(tc.args, 'vmotion_enable', False):
        vmotion_utils.PrepareWorkloadVMotion(tc, [tc.client])

    return api.types.status.SUCCESS
Exemplo n.º 11
0
def Setup(tc):
    setupWorkloadDict(tc, tc.iterators.kind)

    if getattr(tc.args, 'vmotion_enable', False):
        wllist = []
        for w1 in tc.workload_dict.keys():
            wllist.append(w1)
        vmotion_utils.PrepareWorkloadVMotion(tc, wllist)

    agent_api.DeleteSgPolicies()
    tc.scale = tc.iterators.scale
    result = test.execute()
    api.Logger.info("ip rule table module sanity check - %s"%
                    ("SUCCESS" if result else "FAIL"))
    if not result:
        return api.types.status.FAILURE

    if not copyTestCommand(tc):
        return api.types.status.FAILURE

    if not addPktFltrRuleOnEp(tc, enable=True):
        return api.types.status.FAILURE

    return api.types.status.SUCCESS