from microservices import redirectios
from microservices import receiveios
import string
import random
import socket
import struct
import hashlib
import time

ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))


# md5加密
def computeMD5(message):
    m = hashlib.md5()
    m.update(message.encode(encoding='utf-8'))
    return m.hexdigest()


# md5加密
def computeMD5upper(message):
    m = hashlib.md5()
    m.update(message.encode(encoding='utf-8'))
    return m.hexdigest().upper()




n = 10
def code_nums(n=6):
    ret = ''
    for i in range(n):
        num = random.randint(0, 9)
        letter = chr(random.randint(97, 122))
        s = str(random.choice([num, letter]))
        ret += s
    return ret



def idfacode():
    ret = ''
    a = "".join(random.sample(string.ascii_letters + string.digits, 8))
    b = "".join(random.sample(string.ascii_letters + string.digits, 4))
    c = "".join(random.sample(string.ascii_letters + string.digits, 4))
    d = "".join(random.sample(string.ascii_letters + string.digits, 4))
    e = "".join(random.sample(string.ascii_letters + string.digits, 12))
    i = (a + "-" + b + "-" + c + "-" + d + "-" + e).upper()
    ret += i
    return ret


def idfvcode():
    ret = ''
    a = "".join(random.sample(string.ascii_letters + string.digits, 8))
    b = "".join(random.sample(string.ascii_letters + string.digits, 4))
    c = "".join(random.sample(string.ascii_letters + string.digits, 4))
    d = "".join(random.sample(string.ascii_letters + string.digits, 4))
    e = "".join(random.sample(string.ascii_letters + string.digits, 12))
    i = (a + "-" + b + "-" + c + "-" + d + "-" + e).upper()
    ret += i
    return ret


# ------------------------点击的取值顺序-----------------
# idfa正常值,idfv为正常值;idfa_md5正常值,idfv_md5为正常值,deviceid取idfa,deviceid md5取idfa_md5
def test_atb1():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.parms['idfv'] = v
    redirectios.parms['idfv_md5'] = computeMD5(v)
    redirectios.parms['ipv4'] = ip
    redirectios.parms[
        'ua'] = 'iOS / Chrome 34: Mozilla/5.0 (iPad; CPU OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/34.0.1847.18 Mobile/11B554a Safari/9537.53'
    redirectios.send_request3('')
    print(i)


# idfa>ipv4
# idfa为空,idfv为正常值;idfa_md5为空,idfv_md5为正常值,deviceid取ip
def test_atb2():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = ''
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['idfv'] = v
    redirectios.parms['idfv_md5'] = computeMD5(v)
    redirectios.parms['ipv4'] = ip
    redirectios.send_request3('')
    print(i)


# ------------------------精准归因-----------------
# idfa正常值,idfv为正常值;idfa_md5正常值,idfv_md5为正常值,归因结果为idfa
def test_atb3():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(2)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(i)


# idfa点击为小写,iafa激活为大写,无归因
def test_atb4():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i.lower()
    redirectios.parms['idfa_md5'] = ''
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.send_request()
    print(i)


# idfa点击为大写,idfa激活为小写,无归因
def test_atb5():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = ''
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i.lower()
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i.lower()
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.send_request()
    print(i.lower())


# 激活中的idfa_md5与点击中的idfa_md5一致,点击中idfa正常,激活中idfa为空,归因结果为idfa_md5
def test_atb6():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = ''
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(v)


# 激活中的idfa_md5与点击中的idfa_md5大小写不一致,点击中idfa_md5为小写,激活中idfa_md5为大写,不归因
def test_atb7():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = ''
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5upper(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(v)


# 激活中的idfa_md5与点击中的idfa_md5大小写不一致,点击中idfa_md5为大写,激活中idfa_md5为小写,不归因
def test_atb8():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5upper(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = ''
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(v)
    print(computeMD5(i))


# idfa点击为小写,iafa激活为大写,idfa_md5点击有值,激活无值,实时侧添加md5加密值,归因方式为idfa_md5
def test_atb9():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i.lower()
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.send_request()
    print(i)


# idfa_md5激活无值,实时侧添idfa_md5加密值
def test_atb31():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.send_request()
    print(v)


# -----------------------不可用归因的设备ID无法精准归因----------------------
# 激活数据中的idfa为‘00000000-0000-0000-0000-000000000000’
# idfa_md5为空
# 点击中的idfa为‘00000000-0000-0000-0000-000000000000’
# ip不同,无法归因
def test_atb10():
    i = idfacode()
    v = idfvcode()
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ip2 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = '00000000-0000-0000-0000-000000000000'
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['ipv4'] = ip1
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip2
    receiveios.send_request()
    print(v)


# 激活数据中的idfa为全0,idfa_md5为全0 md5加密,点击中的idfa为空,无法归因
def test_atb11():
    i = idfacode()
    v = idfvcode()
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ip2 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = ''
    redirectios.parms['idfa_md5'] = '9f89c84a559f573636a47ff8daed0d33'
    redirectios.parms['ipv4'] = ip1
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = '9f89c84a559f573636a47ff8daed0d33'
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip2
    receiveios.send_request()
    print(v)


# 激活数据中的idfa为全0,idfa_md5为空 ,点击中的idfa为空,idfa_md5为空,无法归因
def test_atb12():
    i = idfacode()
    v = idfvcode()
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ip2 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = ''
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['ipv4'] = ip1
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip2
    receiveios.send_request()
    print(v)


# ----------------------------------概率归因--------------------------


# 无可用于归因的设备
# ip相同,ua相同(ua为原值)
# 1.ua_click_fp_ipua_switch开启,ua_click_fp_ip_switch开启,归因结果为ip_ua
# 2.ua_click_fp_ipua_switch关闭,ua_click_fp_ip_switch开启,归因结果为ipv4
# 3.ua_click_fp_ipua_switch开启,ua_click_fp_ip_switch关闭,归因结果为ip_ua
# 4.ua_click_fp_ipua_switch关闭,ua_click_fp_ip_switch关闭,归因结果为自然量

def test_atb13():
    ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = '00000000-0000-0000-0000-000000000000'
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['ipv4'] = ip
    redirectios.parms['ua'] = ua
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.data[0]['device_info']['ua'] = ua
    receiveios.send_request()
    print(v)


# 无可用于归因的设备
# ip相同,ua不同
# 1.ua_click_fp_ipua_switch开启,ua_click_fp_ip_switch开启,归因结果为ipv4
# 2.ua_click_fp_ipua_switch关闭,ua_click_fp_ip_switch开启,归因结果为ipv4
# 3.ua_click_fp_ipua_switch开启,ua_click_fp_ip_switch关闭,归因结果为自然量

def test_atb14():
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    ua2 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = '00000000-0000-0000-0000-000000000000'
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['ipv4'] = ip
    redirectios.parms['ua'] = ua1
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.data[0]['device_info']['ua'] = ua2
    receiveios.send_request()
    print(v)


# 无可用于归因的设备
# ip相同,ua相同(点击中的ua为编码后的)
# 1.ua_click_fp_ipua_switch开启,ua_click_fp_ip_switch开启,归因结果为ip_ua
def test_atb15():
    ua2 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    ua1 = 'Mozilla%2F5.0%20(iPhone%3B%20CPU%20iPhone%20OS%2013_5_1%20like%20Mac%20OS%20X)%20AppleWebKit%2F605.1.15%20(KHTML%2C%20like%20Gecko)%20Mobile%2F15E148'
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = '00000000-0000-0000-0000-000000000000'
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['ipv4'] = ip
    redirectios.parms['ua'] = ua1
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.data[0]['device_info']['ua'] = ua2
    receiveios.send_request()
    print(v)


# 无可用于归因的设备
# ip相同,ua相同(激活中的ua为编码后的)
# 1.ua_click_fp_ipua_switch开启,ua_click_fp_ip_switch开启,归因结果为ip_ua
def test_atb16():
    ua2 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    ua1 = 'Mozilla%2F5.0%20(iPhone%3B%20CPU%20iPhone%20OS%2013_5_1%20like%20Mac%20OS%20X)%20AppleWebKit%2F605.1.15%20(KHTML%2C%20like%20Gecko)%20Mobile%2F15E148'
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = '00000000-0000-0000-0000-000000000000'
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['ipv4'] = ip
    redirectios.parms['ua'] = ua2
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.data[0]['device_info']['ua'] = ua1
    receiveios.send_request()
    print(v)


# 无可用于归因的设备
# ip不同,ua相同(激活中的ua为编码后的)
# 1.ua_click_fp_ipua_switch开启,ua_click_fp_ip_switch开启,归因结果自然量
def test_atb17():
    ua2 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    ua1 = 'Mozilla%2F5.0%20(iPhone%3B%20CPU%20iPhone%20OS%2013_5_1%20like%20Mac%20OS%20X)%20AppleWebKit%2F605.1.15%20(KHTML%2C%20like%20Gecko)%20Mobile%2F15E148'
    v = idfvcode()
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ip2 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = '00000000-0000-0000-0000-000000000000'
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['ipv4'] = ip1
    redirectios.parms['ua'] = ua2
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip2
    receiveios.data[0]['device_info']['ua'] = ua1
    receiveios.send_request()
    print(v)


# -----------------last-click规则验证------------------
# 发送一次点击数据,五分钟后再次发送点击数据,归因到的为第二次的点击
def test_atb18():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(300)
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('mURv22a', '')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(i)


# ----------------------------------ip取值规则-激活----------------------------------
# integration_type为sdk,根据HTTP Header中的IP取值(SDK集成时,报文中也不会有ip传参)
def test_atb19():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['collector_info']['integration_type'] = 'sdk'
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(i)


# integration_type为s2s,根据传参中的ipv4进行IP取值
def test_atb20():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['collector_info']['integration_type'] = 's2s'
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['ipv4'] = ip

    receiveios.send_request2()
    print(i)


# ---------------------------激活有效期逻辑---------------------------
# 在激活有效期(104秒)之外:归因上之后,110秒后再次发送点击激活数据,查询归因接口,可再次归因
def test_atb21():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(110)
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(i)


# 在激活有效期(104秒)之内:归因上之后,20秒后再次发送激活数据,查询归因接口,为第一次归因结果
def test_atb22():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(20)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(i)


# 在激活有效期(104秒)之外:归因上之后,200秒后再次发送激活数据,查询归因接口,为自然量
def test_atb23():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(200)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(i)


# ------------------------------------新客获取点击精准归因回溯窗口期------------------------------------
# 点击精准归因回溯窗口期设置为2分钟
# 发送点击,1分钟之后发送激活,可归因上
def test_atb24():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(60)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(i)


# 点击精准归因回溯窗口期设置为2分钟
# 发送点击,3分钟之后发送激活,无法归因,为自然量
def test_atb25():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(180)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(i)


# ------------------------------------新客获取点击IPUA概率归因回溯窗口期------------------------------------
# IPUA概率归因回溯窗口期设置30秒
# 发送点击,20秒之后发送激活,可归因上
def test_atb26():
    ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = '00000000-0000-0000-0000-000000000000'
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['ipv4'] = ip
    redirectios.parms['ua'] = ua
    redirectios.send_request3('')
    time.sleep(20)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.data[0]['device_info']['ua'] = ua
    receiveios.send_request()
    print(v)


# IPUA概率归因回溯窗口期设置30秒
# 发送点击,35秒之后发送激活,无法归因,为自然量
def test_atb27():
    ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = '00000000-0000-0000-0000-000000000000'
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['ipv4'] = ip
    redirectios.parms['ua'] = ua
    redirectios.send_request3('')
    time.sleep(35)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.data[0]['device_info']['ua'] = ua
    receiveios.send_request()
    print(v)


# ------------------------------------新客获取点击IP概率归因回溯窗口期------------------------------------
# IPUA概率归因回溯窗口期设置8秒
# 发送点击,3秒之后发送激活,可归因上
def test_atb28():
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    ua2 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = '00000000-0000-0000-0000-000000000000'
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['ipv4'] = ip
    redirectios.parms['ua'] = ua1
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.data[0]['device_info']['ua'] = ua2
    receiveios.send_request()
    print(v)


# IPUA概率归因回溯窗口期设置8秒
# 发送点击,10秒之后发送激活,无法归因,为自然量
def test_atb29():
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    ua2 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectios.parms['idfa'] = '00000000-0000-0000-0000-000000000000'
    redirectios.parms['idfa_md5'] = ''
    redirectios.parms['ipv4'] = ip
    redirectios.parms['ua'] = ua1
    redirectios.send_request3('')
    time.sleep(10)
    receiveios.data[0]['device_info']['idfa'] = '00000000-0000-0000-0000-000000000000'
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = v
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfv'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.data[0]['device_info']['ua'] = ua2
    receiveios.send_request()
    print(v)


# -------------------------------后续事件归因---------------------------------
# device_id相同-可通过device_id进行关联
def test_atb30():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['account_id'] = '456'
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    newList = ['startup', 'register', 'login', 'order', 'purchase',
               'adimpression', 'adclick']
    for event in newList:
        receiveios.data[0]['device_info']['idfa'] = i
        receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
        receiveios.data[0]['device_info']['idfv'] = v
        receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
        receiveios.data[0]['device_info']['device_id'] = i
        receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
        receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
        receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
        receiveios.data[0]["event_info"]['event_name'] = event
        receiveios.data[0]["event_info"]['event_type'] = 'preset'
        receiveios.send_request()
    print(i)


# 归因到渠道的startup
def test_atb45():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'startup'
    receiveios.data[0]["event_info"]['event_type'] = 'preset'
    receiveios.send_request()
    print(i)


# 归因到渠道的register
def test_atb32():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'register'
    receiveios.data[0]["event_info"]['event_type'] = 'preset'
    receiveios.send_request()
    print(i)


# 归因到渠道的login
def test_atb33():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'login'
    receiveios.data[0]["event_info"]['event_type'] = 'preset'
    receiveios.send_request()
    print(i)


# 归因到渠道的order
def test_atb34():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'order'
    receiveios.data[0]["event_info"]['event_type'] = 'preset'
    receiveios.send_request()
    print(i)


# 归因到渠道的purchase
def test_atb35():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(5)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'purchase'
    receiveios.data[0]["event_info"]['event_type'] = 'preset'
    receiveios.send_request()
    print(i)


# 归因到渠道的adimpression
def test_atb36():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'adimpression'
    receiveios.data[0]["event_info"]['event_type'] = 'preset'
    receiveios.send_request()
    print(i)


# 归因到渠道的adclick
def test_atb37():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    # newList = ['startup', 'register', 'login', 'order', 'purchase',
    #            'adimpression', 'adclick']
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'adclick'
    receiveios.data[0]["event_info"]['event_type'] = 'preset'
    receiveios.send_request()
    print(i)


# 未配置回调的apkkey
def test_atb38():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['application_info']['appkey'] = 'b3beb14b8de6cb5b64650ff8e5983c44'
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    newList = ['startup', 'register', 'login', 'order', 'purchase',
               'adimpression', 'adclick']
    for event in newList:
        receiveios.data[0]['application_info']['appkey'] = 'b3beb14b8de6cb5b64650ff8e5983c44'
        receiveios.data[0]['device_info']['idfa'] = i
        receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
        receiveios.data[0]['device_info']['idfv'] = v
        receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
        receiveios.data[0]['device_info']['device_id'] = i
        receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
        receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
        receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
        receiveios.data[0]["event_info"]['event_name'] = event
        receiveios.data[0]["event_info"]['event_type'] = 'preset'
        receiveios.send_request()
    print(i)


# 归因到渠道的startup,点击中的callback_url为空
def test_atb39():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['callback_url'] = ''
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'startup'
    receiveios.data[0]["event_info"]['event_type'] = 'preset'
    receiveios.send_request()
    print(i)


# 归因到渠道的startup,点击中的callback_url为空
def test_atb40():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['callback_url'] = 'https%3A%2F%2Fwww.baidu.com%2F%3Ftn%3D98010089_dg%26ch%3D16%2F'
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'startup'
    receiveios.data[0]["event_info"]['event_type'] = 'preset'
    receiveios.send_request()
    print(i)


# 归因到渠道的自定义事件
def test_atb42():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(8)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'custom_event_1'
    receiveios.data[0]["event_info"]['event_type'] = 'custom'
    receiveios.send_request()
    print(i)


# 第一次点击的idfa与激活相同,第二次点击ip与激活相同,归因到第一次点击
def test_atb43():
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ip2 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    i2 = idfacode()
    i = idfacode()
    v = idfvcode()
    redirectios.parms['ipv4'] = ip1
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(100)
    redirectios.parms['ipv4'] = ip2
    redirectios.parms['idfa'] = i2
    redirectios.parms['idfa_md5'] = computeMD5(i2)
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['ipv4'] = ip2
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(i)


# 归因到渠道的激活
def test_atb44():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_request()
    print(i)


# 自然量
def test_atb46():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'install'
    receiveios.send_request()
    print(i)


# -----------------------asa逻辑测试--------------------

# 数据为测试数据,不是asa激活,走正常归因逻辑
def test_asa1():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '1234567890'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# 数据不为测试数据,走asa归因
def test_asa2():
    i = idfacode()
    # i = '83XGICNT-KNGI-L1EK-EC4N-DZTNFLKNO1ME'
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '12345678901'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# iad归因为空且tkoen为空,走正常归因逻辑
def test_asa3():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = ''
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '12345678901'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# iad-org-id为空,iad-attribution为true
def test_asa4():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = ''
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# iad归因为false且tkoen为空,走正常归因逻辑
def test_asa5():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'false'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '12345678901'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# 不传iad-attribution和token字段,走正常归因逻辑
def test_asa6():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = ''
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '12345678901'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# iad-attribution为大写TRUE,iad-org-id非测试数据,走正常归因
def test_asa7():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'TRUE'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '423323'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# iad归因为空,tkoen不为空但是token是错误的,走正常归因逻辑
def test_asa8():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = ''
    receiveios.data[0]['asa_info']['adservices_info'][
        'token'] = 'kv1FiGQJnzzZdnQpDq4g3fnXT4z3Q7tBH/0j43lYIJoT25QzNbez/gIrU4fQ/EFrpw3xo7QNTKFjhRv9WqTYISBmOYVgM1Qf6QAAAVADAAAAwgAAAIAy/g+7t1Q14p7B88Q/IEQRPm3fRmGIEQYjqoyPcmXCbmfkWhFYlI7tGalXnOiaVTG+42C4rCPK4aGTVTGvVC51BpDbaYEmzirAUa7Zx1250iaO6rVqnR+70dQ/4rqUr9Y3xIeYFxZTzlO5balJR8p6tFH9JebQN5cnS6iYvW2HFwAAABtCe4TJZstJGHhzx1mZwoH/DshcQUzoEw3CWsQAAACfAQq+ciM0JRGNd8IRMms27Jv9NoGLAAAAhgIG6Ob8mQt05KAOunoU2GRA8WKLioF8Znqe2X5Wfy8sEzg4zM30ZKQIvcAXPZPcIAaWP4pbi2ud87ABIW4Z8Sa8QnGSqMYbZ99Z3mYFHP81vVEDEglXyL8/jvFf49mZKa9HE4bIKu7KzGQ9BiAMxFujG9LPMKEBVnS5vai3CqdjZ0e5SUfYAAAAAAABBEYNAgA='
    receiveios.send_request()
    print(i)


# iad归因为空,tkoen不为空且token正确-返回ads归因为false(非测试数据)
def test_asa9():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = ''
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '1234321'
    receiveios.data[0]['asa_info']['adservices_info'][
        'token'] = '/uCODngkP2bfsOpiWj3Q4JWvx6dmJEiTR/FfpY0xMuouweoKUWwn+ALDeMZ2+5ihfKGoxyEXFVzn1ch1xu2kk7R4xIWng4SUIQAAAVADAAAAnwAAAIBIN+L3PPnC3mZ+jIeIf+hB/rhMn82ER6CJwIwYJxU0B2O4Q/1KXJQGzD+QJzL3J+LNAyACyT2aUWVhhbGKZfvCLJzr3vAMObtbIUC9H3dWnBfgVB8iYfnjo044dXj91mgleA1HYYZiIaolUKH0jnWx/oGnYB8u0kYihT40rUbZWwAAABzDaguAs337EhcpBDlig2UD+5cFxj6wU9gUPJ4/AAAAnwHxuacYGJWMa2ddMRsdWjhxq0uXmQAAAIYJBPMT42aNI8GHrOL3MMHllrlikCUNPxATYRC+isFRKcGP8lpJViUEAt1Mqf2ttO/z9rNHHs8eULJ7FddDAV8CiTD/yB42HjQaJz+t6pOpBGHKuvn6BIfanN7rC0+ZiANrBaRFVosBLwrLUiSsRqsX3YmEs/TWLbsiKeeoLU6kwAlJtNd7fwAAAAABBEYXAAA='
    receiveios.send_request()
    print(i)


# 先正常自然量激活,然后在激活有效期内发送asa激活,归因结果覆盖为asa激活
def test_asa10():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'false'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '1234567890'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    time.sleep(5)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '12345678901'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


##数据为测试数据,不是asa激活,走正常归因逻辑(归因到渠道)
def test_asa11():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(5)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '1234567890'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# 数据不为测试数据(有该设备的点击),走asa归因
def test_asa12():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(5)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '12345678901'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# iad归因为空,tkoen不为空且token正确-返回ads归因为false(非测试数据)-走正常归因
# 该设备id存在巨量引擎渠道的点击,归因到了巨量引擎渠道
def test_asa13():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.send_request3('')
    time.sleep(5)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = ''
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '1234321'
    receiveios.data[0]['asa_info']['adservices_info'][
        'token'] = 'X8RCyiSWbRqrW4Dkgj1PTfAcONQm9pNtegs4Gieca0Mv1Re9V4DDewKoLcbS+Qob7jdZksxyzHkSMA/YW0s0Q96+Q0J73i2RYgAAAVADAAAA5gAAAIAc9XYhkA0EIyeqj7ZEsksLNiqaUTJN8YMn5Iy9EEBJROco1YJDXnxG2obH2awUBC3onAuDqJ/fRp+T8UkFR099mA76p6ZmZ4f0284XnP1ZeeZ5wjre5sawVJ88sG51VdPXeQKxclHn0viLv8U4jtKAbbaueaPx6NjTag1H3PJsvQAAABo7Bo75BPoGIxgOT0Bvp7e5H+qXhYnqHc8SAQAAAJ8Bc3bS2UKQeel68MTBrSJ+Rx7Zn6cAAACGAAIPO3te8WGQZzjpUj1nXRxDYorJNoqYJ6zSZobXAFhkbqKEYzjCOTfDXENyhvyaf0thWkcoyd3KdxuqIgdFmSEW44M9aLzWszyCpSDddyP7m1TIAVl0rrzz3jjSIyvw6VSgFmUN2zRRTLL7JiE+05pLm3wMA/SPZBQ11AkdnuhXHbTyx+QAAAAAAAABBEYXAAA='
    receiveios.send_request()
    print(i)


# 数据不为测试数据,走asa归因;不传iad-click-date,归因结果的attribution_ttit为-1
def test_asa14():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '12345678901'
    receiveios.data[0]['asa_info']['iad_info']['iad-click-date'] = ''
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# 数据不为测试数据,走asa归因;传iad-click-date且格式正确,归因结果的 attribution_ttit 为 install_time 减去 iad-click-date
def test_asa15():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_inf5d7db80b4af9dd26b9723d1eaf5b5249o']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '12345678901'
    receiveios.data[0]['asa_info']['iad_info']['iad-click-date'] = '2022-5-30T18:25:00Z'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# 数据不为测试数据,走asa归因;传iad-click-date但格式错误,归因结果的 attribution_ttit 为 install_time 减去 iad-click-date
def test_asa16():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '12345678901'
    receiveios.data[0]['asa_info']['iad_info']['iad-click-date'] = '1653893249158'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# 数据不为测试数据,走asa归因;传iad-click-date但格式错误,归因结果的 attribution_ttit 为 install_time 减去 iad-click-date
def test_asa17():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '12345678901'
    receiveios.data[0]['asa_info']['iad_info']['iad-click-date'] = '2022-05-30 14:47:29'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_request()
    print(i)


# 1.iad-attribution=''
# 2.token为正常tkoen(ads归因为true)
# 3.苹果接口返回的orgId不为1234567890
# 归因结果为asa激活
def test_asa18():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = ''
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '756347876534'
    receiveios.data[0]['asa_info']['adservices_info'][
        'token'] = 'j/th0yzvyrYAe5Il7bFin170v3jZw91+YdBx3zazPI8uPGQoyre/LQLYs5Opi8JyzcTG+ObMXdT3p/fTP0IXejwjAF21LpFEtAAAAVADAAAA7AAAAIAKPGDN9WBW3hOsgYWMQGGTvq95ypr3bd/1Hnb2iQajqLn/OxLDgNoNFJQ8EsR47Sh3ZWKaEbllNAd/H+LGeIdURRo6dP1diLjU+InPE2aQLbNi89KEqs3cucsftUtFtiRwEDurXTpm3fgfNVybUzfYCti5ym3AccuNOcYGSl2amQAAABqGOYksqrQzqzrcu4qfa+XA/rLksbu1gxtV8gAAAJ8BeKiMBfLYzFJ3qz7nwST5d9JIiZ4AAACGCQjiP9YpMcnDlOZJso/3K3R3Yo8qJArYSqS+c8fjbsSMYbQPSwDfTWjORqw2fdsAu6I+CFFI8s7ASo0x3xYpXH2lcqc4TcCIpyjd6uld1tQprqmAWTQO9tZPU/H6uvsnP3G+WsGgxTMsMbziFmfTmUeVxiXfuYC0f2iFmOZMu9fhUHEecXkAAAAAAAABBEULAAA='
    receiveios.send_request()
    print(i)


# 1.iad-attribution=''
# 2.token为正常tkoen(ads归因为true)
# 3.iad-org-id为1234567890
# 归因结果自然量激活
def test_asa19():
    i = idfacode()
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = ''
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '1234567890'
    receiveios.data[0]['asa_info']['adservices_info'][
        'token'] = 'dIfXgKK4xWpsSZso/fXBRHWgqGOWoxyPogHyfLAgrFoAI75QzuDJegKX7jEZJAwjTAhZOtyYZQZ7/Gc+18uQNebfjEePRThBygAAAVADAAAAiQAAAIBpXlw+eqV6tFOGOmCG/777IqdLFF4sf+58OQXLlKcCqrVUhT2t3fJOqOOApSpjDHWBwYPnFHRGQNY+Jnf75m0OCxRH7dvaN/Y1qcP7GCBo5/0UJFyTbw/I1E6InKCVU5sFWCzB48TPejHM8YNwYdrP9k43E2nIyNzkvyFLhY9LugAAABlyvfrbh9dLtdGGgvYj2AwaXTbFLxNgWVP3AAAAnwFtHDm1Hyztnnv+FTFXV/KUe8VGPwAAAIYFAkbPuDxDgEPtHqLeVUlyfQlilDzKxKWf+sqhTpNJd4+xaVVI6mEIql21tRqO6bpAraKkhga2gb09AOSWboketDBrbM7a5LSsc7LnAQD97XSIfjXQLDgOv0nFyXEHatlciHTpjAYJGzreNCFGAWfKZQUkQ6P134ygBcScmmu5KTQtDYqkDgAAAAAAAAABBEYXAAA='
    receiveios.send_request()
    print(i)


# -------------------展示归因-------------------------
# ************************精准归因验证************************
# 【新客获取展示精准归因开关】开,【新客获取展示概率IP+UA归因开关】开,【新客获取展示概率IP归因开关】开,传展示和激活数据(设备id,ip,ua相同),可精准归因
def test_impatb1():
    i = idfacode()
    v = idfvcode()
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.parms['ua'] = ua1
    redirectios.parms['touchpoint_type'] = 'impression'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['ua'] = ua1
    receiveios.send_request()
    print(i)


# 【新客获取展示精准归因开关】开,【新客获取展示概率IP+UA归因开关】开,【新客获取展示概率IP归因开关】开,传展示和激活数据(设备id不同,ip,ua相同),可ip+ua归因
def test_impatb2():
    i = idfacode()
    i2 = idfacode()
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    redirectios.parms['idfa'] = i2
    redirectios.parms['idfa_md5'] = computeMD5(i2)
    redirectios.parms['ua'] = ua1
    redirectios.parms['ipv4'] = ip
    redirectios.parms['touchpoint_type'] = 'impression'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['ua'] = ua1
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.send_request()
    print(i)


# 【新客获取展示精准归因开关】开,【新客获取展示概率IP+UA归因开关】开,【新客获取展示概率IP归因开关】开,传展示和激活数据(设备id,ua不同,ip相同),可ip归因
def test_impatb3():
    i = idfacode()
    i2 = idfacode()
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    ua2 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    redirectios.parms['idfa'] = i2
    redirectios.parms['idfa_md5'] = computeMD5(i2)
    redirectios.parms['ua'] = ua1
    redirectios.parms['ipv4'] = ip
    redirectios.parms['touchpoint_type'] = 'impression'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['ua'] = ua2
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.send_request()
    print(i)


# ************************ip+ua归因验证************************
# 【新客获取展示精准归因开关】关,【新客获取展示概率IP+UA归因开关】开,【新客获取展示概率IP归因开关】关,传展示和激活数据(ip,ua相同),归因上ip+ua
def test_impatb4():
    i = idfacode()
    i2 = idfacode()
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    redirectios.parms['idfa'] = i2
    redirectios.parms['idfa_md5'] = computeMD5(i2)
    redirectios.parms['ua'] = ua1
    redirectios.parms['ipv4'] = ip
    redirectios.parms['touchpoint_type'] = 'impression'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['ua'] = ua1
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.send_request()
    print(i)


# 【新客获取展示精准归因开关】关,【新客获取展示概率IP+UA归因开关】开,【新客获取展示概率IP归因开关】关,传展示和激活数据(ip相同,ua不同),归因不上
def test_impatb5():
    i = idfacode()
    i2 = idfacode()
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    ua2 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_9_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    redirectios.parms['idfa'] = i2
    redirectios.parms['idfa_md5'] = computeMD5(i2)
    redirectios.parms['ua'] = ua1
    redirectios.parms['ipv4'] = ip
    redirectios.parms['touchpoint_type'] = 'impression'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['ua'] = ua2
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.send_request()
    print(i)


# ************************ip归因验证************************
# 【新客获取展示精准归因开关】开,【新客获取展示概率IP+UA归因开关】关,【新客获取展示概率IP归因开关】开,传展示和激活数据(ip相同),归因上ip
def test_impatb6():
    i = idfacode()
    i2 = idfacode()
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    ua2 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_9_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    redirectios.parms['idfa'] = i2
    redirectios.parms['idfa_md5'] = computeMD5(i2)
    redirectios.parms['ua'] = ua1
    redirectios.parms['ipv4'] = ip
    redirectios.parms['touchpoint_type'] = 'impression'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['ua'] = ua1
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.send_request()
    print(i)


# 【新客获取展示精准归因开关】开,【新客获取展示概率IP+UA归因开关】关,【新客获取展示概率IP归因开关】开,传展示和激活数据(ip不相同),归因不上
def test_impatb7():
    i = idfacode()
    i2 = idfacode()
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ip2 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    ua2 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_9_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    redirectios.parms['idfa'] = i2
    redirectios.parms['idfa_md5'] = computeMD5(i2)
    redirectios.parms['ua'] = ua1
    redirectios.parms['ipv4'] = ip
    redirectios.parms['touchpoint_type'] = 'impression'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['ua'] = ua1
    receiveios.data[0]['device_info']['ipv4'] = ip2
    receiveios.send_request()
    print(i)


# ************************ip+ua,ip同时开启,优先级验证************************
# 【新客获取展示精准归因开关】开,【新客获取展示概率IP+UA归因开关】开,【新客获取展示概率IP归因开关】开,传展示和激活数据(ip,ua相同),归因上ip+ua
def test_impatb8():
    i = idfacode()
    i2 = idfacode()
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    redirectios.parms['idfa'] = i2
    redirectios.parms['idfa_md5'] = computeMD5(i2)
    redirectios.parms['ua'] = ua1
    redirectios.parms['ipv4'] = ip
    redirectios.parms['touchpoint_type'] = 'impression'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['ua'] = ua1
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.send_request()
    print(i)


# ************************【新客获取展示概率IP+UA归因回溯窗口期】验证************************
# 【新客获取展示概率IP+UA归因回溯窗口期】设置15秒,发送展示,13秒后发送激活,可ip+ua归因
# 【新客获取展示概率IP+UA归因回溯窗口期】设置15秒,发送展示,16秒后发送激活,归因不上
def test_impatb9():
    i = idfacode()
    i2 = idfacode()
    v = idfvcode()
    ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ua1 = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    redirectios.parms['idfa'] = i2
    redirectios.parms['idfa_md5'] = computeMD5(i2)
    redirectios.parms['ua'] = ua1
    redirectios.parms['ipv4'] = ip
    redirectios.parms['touchpoint_type'] = 'impression'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['ua'] = ua1
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.send_request()
    print(i)







# 1.传一个激活,google自归因查询为true,2.last touch来自google渠道
# 归因为google,并通知google
# google归因
def test_atbgoogle():
    # i = idfacode()
    i = '3C3FA051-DB2A-4F4F-9154-BC15EF565750'
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['timestamp_info']['current_event_time'] = '1659148260199'
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]["event_info"]['event_name'] = 'install'
    receiveios.send_requestgoogle()
    print(i)



# 1.传一个激活,google自归因查询为true
# 2.有google渠道的点击
# 3.有cid=514的渠道下有点击(last touch)
# 归因为514渠道,并通知google
def test_atbgoogle2():
    i2 = idfacode()
    i = idfacode()
    # i = '3C3FA051-DB2A-4F4F-9154-BC15EF565750'
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i)
    redirectios.parms['ts'] = '1656878232000'
    redirectios.send_requestgoogle('')
    time.sleep(5)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['timestamp_info']['current_event_time'] = '1659148260199'
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i2)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_requestgoogle()
    print(i)


# asa激活
def test_atbgoogle3():
    # i = idfacode()
    i = '9C3FA051-DB2A-4F4F-9154-BC15EF565773'
    v = idfvcode()
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['timestamp_info']['current_event_time'] = '1659148260199'
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['asa_info']['iad_info']['iad-attribution'] = 'true'
    receiveios.data[0]['asa_info']['iad_info']['iad-org-id'] = '12345678901'
    receiveios.data[0]['asa_info']['adservices_info']['token'] = ''
    receiveios.send_requestgoogle()
    print(i)



# 1.传一个激活,google自归因查询为true
# 2.模拟一条google点击
# 3.传一条头条展示
# (google点击的时间早于头条展示的时间)
# 归因到google
def test_atbgoogle4():
    i2 = idfacode()
    # i = idfacode()
    i = '3C3FA051-DB2A-4F4F-9154-BC15EF565750'
    v = idfvcode()
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = computeMD5(i2)
    redirectios.parms['touchpoint_type'] = 'impression'
    redirectios.parms['ts'] = '1656878232000'
    redirectios.send_requestgoogle('')
    time.sleep(5)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['timestamp_info']['current_event_time'] = '1659148260199'
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i2)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i2)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_requestgoogle()
    print(i)




#激活中idfa为空
def test_atbgoogle5():
    i2 = idfacode()
    i = idfacode()
    # i = '3C3FA051-DB2A-4F4F-9154-BC15EF565750'
    v = idfvcode()
    # redirectios.parms['idfa'] = i
    # redirectios.parms['idfa_md5'] = computeMD5(i2)
    # redirectios.parms['ts'] = '1656878232000'
    # redirectios.send_requestgoogle('')
    # time.sleep(5)
    receiveios.data[0]['device_info']['idfa'] = ''
    receiveios.data[0]['timestamp_info']['current_event_time'] = '1659148260199'
    receiveios.data[0]['device_info']['idfa_md5'] = computeMD5(i2)
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = computeMD5(i2)
    receiveios.data[0]['device_info']['device_id_md5'] = computeMD5(i2)
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.send_requestgoogle()
    print(i)




# -------------------数据处理与归因逻辑优化----------------------
def test_at_newipv4():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['ipv4'] = ip
    redirectios.parms['idfa'] = code_nums(37)
    redirectios.parms['idfa_md5'] = code_nums(33)
    redirectios.parms['idfv'] = code_nums(37)
    redirectios.parms['idfv_md5'] = code_nums(33)
    redirectios.parms['is_s2s'] = '1'
    redirectios.parms['touchpoint_type'] = 'click'
    redirectios.parms['attribution_type'] = 'ua'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.send_request()
    print(i)


def test_at_newidfa():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['ipv4'] = code_nums(129)
    redirectios.parms['idfa'] = i
    redirectios.parms['idfa_md5'] = code_nums(33)
    redirectios.parms['idfv'] = code_nums(37)
    redirectios.parms['idfv_md5'] = code_nums(33)
    redirectios.parms['is_s2s'] = '1'
    redirectios.parms['touchpoint_type'] = 'click'
    redirectios.parms['attribution_type'] = 'ua'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.send_request()
    time.sleep(6)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = ''
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = ''
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = ''
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.data[0]["event_info"]['event_name'] = 'register'
    receiveios.data[0]["event_info"]['event_type'] = 'preset'
    receiveios.send_request()
    print(i)



def test_at_newidfa_md5():
    i = idfacode()
    i2 = code_nums(32)
    v = idfvcode()
    redirectios.parms['ipv4'] = code_nums(129)
    redirectios.parms['idfa'] = code_nums(37)
    redirectios.parms['idfa_md5'] = i2
    redirectios.parms['idfv'] = code_nums(37)
    redirectios.parms['idfv_md5'] = code_nums(33)
    redirectios.parms['is_s2s'] = '1'
    redirectios.parms['touchpoint_type'] = 'click'
    redirectios.parms['attribution_type'] = 'ua'
    redirectios.send_request3('')
    time.sleep(3)
    receiveios.data[0]['device_info']['idfa'] = i
    receiveios.data[0]['device_info']['idfa_md5'] = i2
    receiveios.data[0]['device_info']['idfv'] = v
    receiveios.data[0]['device_info']['idfv_md5'] = computeMD5(v)
    receiveios.data[0]['device_info']['device_id'] = i
    receiveios.data[0]['device_info']['device_id_md5'] = i2
    receiveios.data[0]['device_info']['device_id_type'] = 'idfa'
    receiveios.data[0]['device_info']['device_id_md5_type'] = 'idfa_md5'
    receiveios.data[0]['device_info']['ipv4'] = ip
    receiveios.send_request()
    print(i)


# -------------------------所以设备都非法-------------------------
def test_at_newclick1():
    i = idfacode()
    v = idfvcode()
    redirectios.parms['ipv4'] = code_nums(129)
    redirectios.parms['idfa'] = code_nums(37)
    redirectios.parms['idfa_md5'] = code_nums(33)
    redirectios.parms['idfv'] = code_nums(37)
    redirectios.parms['idfv_md5'] = code_nums(33)
    redirectios.parms['is_s2s'] = '1'
    redirectios.parms['touchpoint_type'] = 'click'
    redirectios.parms['attribution_type'] = 'ua'
    redirectios.send_request3('')