from microservices import clickparams
from microservices import redirectandroid
from microservices import receiveandroid
import socket
import struct
import random
import time
import hashlib
import requests
import json

# 700bdf6f8e628686dc9fffccf6ebe58b 对应的安卓短链:73iIZ3a

# URL = 'http://tmtest.trackingio.com/receive/turl/QJZfmma'
# clickparams.parms_android['imei1'] = i
# response = requests.get(url=URL, params=clickparams.parms.update(clickparams.parms_ios), timeout=10, verify=False)
# print(clickparams.parms)
# print(response.text)
i = ''.join(str(random.choice(range(10))) for _ in range(12))
i2 = ''.join(str(random.choice(range(10))) for _ in range(12))
a = ''.join(str(random.choice(range(10))) for _ in range(12))
q = ''.join(str(random.choice(range(10))) for _ in range(16))
o = ''.join(str(random.choice(range(10))) for _ in range(12))
m = ''.join(str(random.choice(range(10))) for _ in range(17))
g = ''.join(str(random.choice(range(10))) for _ in range(36))
md = ''.join(str(random.choice(range(10))) for _ in range(32))
z = '00000000-0000-0000-0000-000000000000'
z1 = '000000000000000'
z2 = '0000000000000000'
z3 = '0000000000000000000000000000000000000000000000000000000000000000'

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()


# 生成小写字母加数字组合
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


# 生成大写字母加数字组合
n = 10


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


# ------------------------点击deviceid取值顺序-----------------------
# device_id取值顺序-oaid不为空,取oaid
def test_qz1():
    redirectandroid.parms['oaid'] = i
    redirectandroid.send_request3('')
    print(i)


# device_id取值顺序-oaid为空,imei1,imei2,mac,android_id,ipv4不为空,取imei1
def test_qz2():
    redirectandroid.parms['imei1'] = i
    redirectandroid.parms['imei2'] = o
    redirectandroid.parms['mac'] = m
    redirectandroid.parms['android_id'] = q
    redirectandroid.send_request3('')
    print(i)


# device_id取值顺序-oaid,imei1为空,imei2,mac,android_id,ipv4不为空,取imei2
def test_qz3():
    redirectandroid.parms['imei2'] = i
    redirectandroid.parms['mac'] = m
    redirectandroid.parms['android_id'] = q
    redirectandroid.send_request3('')
    print(i)


# device_id取值顺序-oaid,imei1,imei2为空,mac,android_id,ipv4不为空,取mac
def test_qz4():
    redirectandroid.parms['mac'] = m
    redirectandroid.parms['android_id'] = q
    redirectandroid.send_request3('')
    print(m)


# device_id取值顺序-oaid,imei1,imei2,mac为空,android_id,ipv4不为空,取android_id
def test_qz5():
    redirectandroid.parms['android_id'] = q
    redirectandroid.send_request3('')
    print(q)


# device_id取值顺序-oaid,imei1,imei2,mac,android_id为空,ipv4不为空,取ipv4
def test_qz6():
    redirectandroid.parms['ipv4'] = ip
    redirectandroid.send_request3('')
    print(ip)


# ------------------------点击device_id_md5取值顺序-----------------------

# device_id_md5取值顺序-imei1_md5,imei2_md5,oaid_md5,gaid_md5,mac_md5,android_id_md5不为空,取oaid_md5
def test_qz7():
    redirectandroid.parms['imei1_md5'] = computeMD5(i)
    redirectandroid.parms['imei2_md5'] = computeMD5(i2)
    redirectandroid.parms['oaid_md5'] = computeMD5(o)
    redirectandroid.parms['gaid_md5'] = computeMD5(g)
    redirectandroid.parms['mac_md5'] = computeMD5(m)
    redirectandroid.parms['android_id_md5'] = computeMD5(a)
    redirectandroid.send_request3('')
    print(i)
    print(computeMD5(i))


# device_id_md5取值顺序-oaid_md5为空,imei1_md5,imei2_md5,gaid_md5,mac_md5,android_id_md5不为空,取imei1_md5
def test_qz8():
    redirectandroid.parms['imei1_md5'] = computeMD5(i)
    redirectandroid.parms['imei2_md5'] = computeMD5(i2)
    redirectandroid.parms['gaid_md5'] = computeMD5(g)
    redirectandroid.parms['mac_md5'] = computeMD5(m)
    redirectandroid.parms['android_id_md5'] = computeMD5(a)
    redirectandroid.send_request3('')
    print(i)
    print(computeMD5(i))


# device_id_md5取值顺序-imei1_md5,oaid_md5为空,imei2_md5,gaid_md5,mac_md5,android_id_md5不为空,取imei2_md5
def test_qz9():
    redirectandroid.parms['imei2_md5'] = computeMD5(i2)
    redirectandroid.parms['gaid_md5'] = computeMD5(g)
    redirectandroid.parms['mac_md5'] = computeMD5(m)
    redirectandroid.parms['android_id_md5'] = computeMD5(a)
    redirectandroid.send_request3('')
    print(computeMD5(i2))


# device_id_md5取值顺序-imei1_md5,oaid_md5,imei2_md5为空,gaid_md5,mac_md5,android_id_md5不为空,取mac_md5
def test_qz10():
    redirectandroid.parms['mac_md5'] = computeMD5(m)
    redirectandroid.parms['gaid_md5'] = computeMD5(g)
    redirectandroid.parms['android_id_md5'] = computeMD5(a)
    redirectandroid.send_request3('')
    print(m)
    print(computeMD5(m))


# device_id_md5取值顺序-imei1_md5,oaid_md5,imei2_md5,mac_md5为空,android_id_md5不为空,取android_id_md5
def test_qz11():
    redirectandroid.parms['gaid_md5'] = computeMD5(g)
    redirectandroid.parms['android_id_md5'] = computeMD5(a)
    redirectandroid.send_request3('')
    print(a)
    print(computeMD5(a))


# -----------------------安卓精准归因----------------------------
# 安卓精准归因-oaid归因
def test_atb1():
    i = code_nums(12)
    redirectandroid.parms['oaid'] = i
    redirectandroid.send_request3('')
    time.sleep(5)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.send_request()
    print(i)


# 安卓精准归因-imei1归因
def test_atb2():
    i = code_nums(12)
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['imei1'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(i)


# 安卓精准归因-imei2归因
def test_atb3():
    i = code_nums(12)
    redirectandroid.parms['imei2'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['imei2'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei2'
    receiveandroid.send_request()
    print(i)


# 安卓精准归因-mac归因
def test_atb4():
    m = code_nums(17)
    redirectandroid.parms['mac'] = m
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = m
    receiveandroid.data[0]['device_info']['mac'] = m
    receiveandroid.data[0]['device_info']['device_id_type'] = 'mac'
    receiveandroid.send_request()
    print(m)


# 安卓精准归因-gaid归因
def test_atb5():
    g = code_nums(36)
    redirectandroid.parms['gaid'] = g
    redirectandroid.parms['imei1'] = q
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['gaid'] = g
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['imei1'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(i)


# 安卓精准归因-imei1_md5归因
def test_atb6():
    redirectandroid.parms['imei1_md5'] = md
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['imei1_md5'] = md
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_md5'] = md
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['device_id_md5_type'] = 'imei1_md5'
    receiveandroid.send_request()
    print(o)


# 安卓精准归因-imei2_md5归因
def test_atb7():
    redirectandroid.parms['imei2_md5'] = md
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['imei2_md5'] = md
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['device_id_md5_type'] = 'imei2_md5'
    receiveandroid.data[0]['device_info']['device_id_md5'] = md
    receiveandroid.send_request()
    print(o)


# 安卓精准归因-oaid_md5归因
def test_atb8():
    redirectandroid.parms['oaid_md5'] = md
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(5)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['oaid_md5'] = md
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['device_id_md5_type'] = 'oaid_md5'
    receiveandroid.data[0]['device_info']['device_id_md5'] = md
    receiveandroid.send_request()
    print(o)
    print(md)


# 安卓精准归因-mac_md5归因
def test_atb44():
    redirectandroid.parms['mac_md5'] = md
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(5)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['mac_md5'] = md
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['device_id_md5_type'] = 'mac_md5'
    receiveandroid.data[0]['device_info']['device_id_md5'] = md
    receiveandroid.send_request()
    print(o)
    print(md)


# 安卓精准归因-gaid_md5归因
def test_atb9():
    redirectandroid.parms['gaid_md5'] = md
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(5)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['gaid_md5'] = md
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['device_id_md5_type'] = 'gaid_md5'
    receiveandroid.data[0]['device_info']['device_id_md5'] = md
    receiveandroid.send_request()
    print(o)


# ---------------------点击激活中设备大小写不一致,无法归因上----------------------------
# 安卓精准归因-imei1归因:点击imei1大写,激活中imei1小写,无法归因上
def test_atb10():
    imei1 = code_nums(12)
    redirectandroid.parms['imei1'] = imei1.upper()
    redirectandroid.send_request3('')
    time.sleep(5)
    receiveandroid.data[0]['device_info']['device_id'] = imei1
    receiveandroid.data[0]['device_info']['imei1'] = imei1
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(imei1)


# 安卓精准归因-imei2归因:点击imei2大写,激活中imei2小写,无法归因上
def test_atb14():
    imei2 = code_nums(12)
    redirectandroid.parms['imei2'] = imei2.upper()
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['imei1'] = i
    receiveandroid.data[0]['device_info']['imei2'] = imei2
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(imei2)
    print(i)


# 安卓精准归因-oaid归因:点击oaid大写,激活中oaid小写,无法归因上
def test_atb11():
    i = code_nums(12)
    redirectandroid.parms['oaid'] = i.upper()
    redirectandroid.send_request3("73iIZ3a", '')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.send_request()
    print(i)


# 安卓精准归因-mac归因:点击mac大写,激活中mac小写,无法归因上
def test_atb12():
    m = code_nums(17)
    redirectandroid.parms['mac'] = m.upper()
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = m
    receiveandroid.data[0]['device_info']['mac'] = m
    receiveandroid.data[0]['device_info']['device_id_type'] = 'mac'
    receiveandroid.send_request()
    print(m)


# 安卓精准归因-gaid归因:点击gaid大写,激活中gaid小写,无法归因上
def test_atb13():
    g = code_nums(36)
    redirectandroid.parms['gaid'] = g.upper()
    redirectandroid.parms['imei1'] = q
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['gaid'] = g
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['imei1'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(i)


# 安卓精准归因-imei1归因:点击imei1小写,激活中imei1大写,无法归因上
def test_atb15():
    imei1 = code_nums(12)
    redirectandroid.parms['imei1'] = imei1
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = imei1.upper()
    receiveandroid.data[0]['device_info']['imei1'] = imei1.upper()
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(imei1.upper())


# 安卓精准归因-imei2归因:点击imei2小写,激活中imei2小大写,无法归因上
def test_atb16():
    imei2 = code_nums(12)
    redirectandroid.parms['imei2'] = imei2
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['imei1'] = i
    receiveandroid.data[0]['device_info']['imei2'] = imei2.upper()
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(imei2)
    print(i)


# 安卓精准归因-oaid归因:点击oaid小写,激活中oaid小大写,无法归因上
def test_atb17():
    i = code_nums(12)
    redirectandroid.parms['oaid'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = i.upper()
    receiveandroid.data[0]['device_info']['oaid'] = i.upper()
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.send_request()
    print(i)


# 安卓精准归因-mac归因:点击mac小写,激活中mac大写,无法归因上
def test_atb18():
    m = code_nums(17)
    redirectandroid.parms['mac'] = m
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = m.upper()
    receiveandroid.data[0]['device_info']['mac'] = m.upper()
    receiveandroid.data[0]['device_info']['device_id_type'] = 'mac'
    receiveandroid.send_request()
    print(m.upper())


# 安卓精准归因-gaid归因:点击gaid小写,激活中gaid大写,无法归因上
def test_atb19():
    g = code_nums(36)
    redirectandroid.parms['gaid'] = g
    redirectandroid.parms['imei1'] = q
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['gaid'] = g.upper()
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['imei1'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(i)


# 安卓精准归因-imei1_md5归因:点击imei1_md5大写,激活中imei1_md5小写,无法归因上
def test_atb20():
    md = code_nums(32)
    redirectandroid.parms['imei1_md5'] = md.upper()
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['imei1_md5'] = md
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(o)


# 安卓精准归因-imei2_md5归因:点击imei2_md5大写,激活中imei2_md5小写,无法归因上
def test_atb21():
    md = code_nums(32)
    redirectandroid.parms['imei2_md5'] = md.upper()
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['imei2_md5'] = md
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(o)


# 安卓精准归因-oaid_md5归因:点击oaid_md5大写,激活中oaid_md5小写,无法归因上
def test_atb22():
    md = code_nums(32)
    redirectandroid.parms['oaid_md5'] = md.upper()
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['oaid_md5'] = md
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(o)


# 安卓精准归因-mac_md5归因:点击mac_md5大写,激活中mac_md5小写,无法归因上
def test_atb23():
    md = code_nums(32)
    redirectandroid.parms['mac_md5'] = md.upper()
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['mac_md5'] = md
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(o)


# 安卓精准归因-gaid_md5归因:点击gaid_md5大写,激活中gaid_md5小写,无法归因上
def test_atb24():
    md = code_nums(32)
    redirectandroid.parms['gaid_md5'] = md.upper()
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['gaid_md5'] = md
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(o)


# 安卓精准归因-imei1_md5归因:点击imei1_md5小写,激活中imei1_md5小大写,无法归因上
def test_atb25():
    md = code_nums(32)
    redirectandroid.parms['imei1_md5'] = md
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['imei1_md5'] = md.upper()
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(o)


# 安卓精准归因-imei2_md5归因:点击imei2_md5小写,激活中imei2_md5大写,无法归因上
def test_atb26():
    md = code_nums(32)
    redirectandroid.parms['imei2_md5'] = md
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['imei2_md5'] = md.upper()
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(o)


# 安卓精准归因-oaid_md5归因:点击oaid_md5小写,激活中oaid_md5大写,无法归因上
def test_atb27():
    md = code_nums(32)
    redirectandroid.parms['oaid_md5'] = md
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['oaid_md5'] = md.upper()
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(o)


# 安卓精准归因-mac_md5归因:点击mac_md5小写,激活中mac_md5大写,无法归因上
def test_atb28():
    md = code_nums(32)
    redirectandroid.parms['mac_md5'] = md
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['mac_md5'] = md.upper()
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(o)


# 安卓精准归因-gaid_md5归因:点击gaid_md5小写,激活中gaid_md5大写,无法归因上
def test_atb29():
    md = code_nums(32)
    redirectandroid.parms['gaid_md5'] = md
    redirectandroid.parms['imei1'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = o
    receiveandroid.data[0]['device_info']['gaid_md5'] = md.upper()
    receiveandroid.data[0]['device_info']['imei1'] = o
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(o)


# -----------------------不可用归因的设备ID无法精准归因----------------------

# android_id相同,激活中其他参数为空,无法归因
def test_atb30():
    i = code_nums(16)
    redirectandroid.parms['android_id'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = ''
    receiveandroid.data[0]['device_info']['device_id_type'] = ''
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(a)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.send_request()
    print(i)


# 点击激活oaid为’00000000-0000-0000-0000-000000000000‘,激活中其他参数为空,无法归因
def test_atb31():
    i = code_nums(16)
    redirectandroid.parms['oaid'] = z
    redirectandroid.send_request3("73iIZ3a", '')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = ''
    receiveandroid.data[0]['device_info']['device_id_type'] = ''
    receiveandroid.data[0]['device_info']['oaid'] = z
    receiveandroid.data[0]['device_info']['oaid_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(a)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.send_request()
    print(i)


# 点击激活oaid为’000000000000000‘,激活中其他参数与点击不同,无法归因
def test_atb32():
    i = code_nums(16)
    redirectandroid.parms['oaid'] = z1
    redirectandroid.send_request3("73iIZ3a", '')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = z1
    receiveandroid.data[0]['device_info']['oaid_md5'] = computeMD5(z1)
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)


# 点击激活oaid为’0000000000000000000000000000000000000000000000000000000000000000‘,激活中其他参数与点击不同,无法归因
def test_atb33():
    i = code_nums(16)
    redirectandroid.parms['oaid'] = z2
    redirectandroid.send_request3("73iIZ3a", '')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = z2
    receiveandroid.data[0]['device_info']['oaid_md5'] = computeMD5(z1)
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)


# 点击激活oaid_md5为’9f89c84a559f573636a47ff8daed0d33‘,激活中其他参数与点击不同,无法归因
def test_atb34():
    i = code_nums(16)
    o = '9f89c84a559f573636a47ff8daed0d33'
    redirectandroid.parms['oaid_md5'] = o
    redirectandroid.send_request3("73iIZ3a", '')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)


# 点击激活oaid_md5为大写’9f89c84a559f573636a47ff8daed0d33‘,激活中其他参数与点击不同,无法归因(待产品决定)
def test_atb35():
    i = code_nums(16)
    o = '9f89c84a559f573636a47ff8daed0d33'
    redirectandroid.parms['oaid_md5'] = o.upper()
    redirectandroid.send_request3("73iIZ3a", '')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o.upper()
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)


# 点击激活oaid_md5为’5284047f4ffb4e04824a2fd1d1f0cd62‘,激活中其他参数与点击不同,无法归因
def test_atb36():
    i = code_nums(16)
    o = '5284047f4ffb4e04824a2fd1d1f0cd62'
    redirectandroid.parms['oaid_md5'] = o
    redirectandroid.send_request3("73iIZ3a", '')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)


# 点击激活oaid_md5为大写’5284047f4ffb4e04824a2fd1d1f0cd62‘,激活中其他参数与点击不同,无法归因(待产品决定)
def test_atb37():
    i = code_nums(16)
    o = '5284047f4ffb4e04824a2fd1d1f0cd62'
    redirectandroid.parms['oaid_md5'] = o.upper()
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o.upper()
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)


# 点击激活oaid_md5为写’1e4a1b03d1b6cd8a174a826f76e009f4‘,激活中其他参数与点击不同,无法归因
def test_atb38():
    i = code_nums(16)
    o = '1e4a1b03d1b6cd8a174a826f76e009f4'
    redirectandroid.parms['oaid_md5'] = o
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)


# 点击激活oaid_md5为写’10eab6008d5642cf42abd2aa41f847cb‘,激活中其他参数与点击不同,无法归因
def test_atb39():
    i = code_nums(16)
    o = '10eab6008d5642cf42abd2aa41f847cb'
    redirectandroid.parms['oaid_md5'] = o
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = ''
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)


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

# 点击激活oaid_md5为’5284047f4ffb4e04824a2fd1d1f0cd62‘,激活中其他参数与点击不同,ip相同,ua_click_fp_ip_switch为关闭/开启状态,不可/可归因
# ua_click_fp_ipua_switch开启,测一下是否影响ip归因,安卓没有ipua归因,所以在ipua开启时,ip关闭时,不可归因
def test_atb40():
    i = code_nums(16)
    o = '5284047f4ffb4e04824a2fd1d1f0cd62'
    redirectandroid.parms['oaid_md5'] = o
    redirectandroid.parms['ipv4'] = ip
    redirectandroid.send_request3('')
    time.sleep(3)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)
    print(ip)


# 当receive信息中的可用归因设备ID,其md5值为空时,需要实时添加md5加密值,加密后的md5参数名称与<receive_template.txt>中相关md5值一致,
# 包括:"oaid_md5","imei1_md5","imei2_md5","mac_md5","gaid_md5"。
def test_atb41():
    i = code_nums(16)
    o = code_nums(16)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = o
    receiveandroid.data[0]['device_info']['oaid_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = code_nums(12)
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = code_nums(17)
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = code_nums(36)
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)


# 安卓精准归因-gaid归因
def test_atb42():
    g = code_nums(36)
    redirectandroid.parms['gaid'] = g
    redirectandroid.parms['imei1'] = q
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['gaid'] = g
    receiveandroid.data[0]['device_info']['device_id'] = g
    receiveandroid.data[0]['device_info']['device_id_type'] = 'gaid'
    receiveandroid.send_request()
    print(g)


# 安卓精准归因-androidid归因查询
def test_atb43():
    a = code_nums(16)
    redirectandroid.parms['android_id'] = a
    redirectandroid.parms['imei1'] = q
    redirectandroid.send_request3('')
    time.sleep(5)
    receiveandroid.data[0]['device_info']['android_id'] = a
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'android_id'
    receiveandroid.send_request()
    print(a)


# 安卓精准归因-oaid归因,渠道后续事件
def test_atb45():
    i = code_nums(12)
    redirectandroid.parms['callback_url'] = 'https://www.baidu.com/?tn=98010089_dg&ch=16/'
    redirectandroid.parms['oaid'] = i
    redirectandroid.send_request3('')
    time.sleep(5)
    # receiveandroid.data[0]['application_info']['appkey'] = 'b8e5e389e1223ffa16a5a9420258383d'
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.send_request()
    # time.sleep(3)
    # receiveandroid.data[0]['application_info']['appkey'] = 'b8e5e389e1223ffa16a5a9420258383d'
    # receiveandroid.data[0]['device_info']['device_id'] = i
    # receiveandroid.data[0]['device_info']['oaid'] = i
    # receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    # receiveandroid.data[0]["event_info"]['event_name'] = 'startup'
    # receiveandroid.data[0]["event_info"]['event_type'] = 'preset'
    # receiveandroid.send_request()
    time.sleep(3)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.data[0]["event_info"]['event_name'] = 'register'
    receiveandroid.data[0]["event_info"]['event_type'] = 'preset'
    receiveandroid.send_request()
    time.sleep(3)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.data[0]["event_info"]['event_name'] = 'login'
    receiveandroid.data[0]["event_info"]['event_type'] = 'preset'
    receiveandroid.send_request()
    # time.sleep(3)
    # receiveandroid.data[0]['device_info']['device_id'] = i
    # receiveandroid.data[0]['device_info']['oaid'] = i
    # receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    # receiveandroid.data[0]["event_info"]['event_name'] = 'purchase'
    # receiveandroid.data[0]["event_info"]['event_type'] = 'preset'
    # receiveandroid.send_request()
    # time.sleep(3)
    # receiveandroid.data[0]['device_info']['device_id'] = i
    # receiveandroid.data[0]['device_info']['oaid'] = i
    # receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    # receiveandroid.data[0]["event_info"]['event_name'] = 'order'
    # receiveandroid.data[0]["event_info"]['event_type'] = 'preset'
    # receiveandroid.send_request()
    # time.sleep(3)
    # receiveandroid.data[0]['application_info']['appkey'] = 'b8e5e389e1223ffa16a5a9420258383d'
    # receiveandroid.data[0]['device_info']['device_id'] = i
    # receiveandroid.data[0]['device_info']['oaid'] = i
    # receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    # receiveandroid.data[0]["event_info"]['event_name'] = 'custom_event_20'
    # receiveandroid.data[0]["event_info"]['event_type'] = 'custom'
    # receiveandroid.send_request()
    # time.sleep(3)
    # receiveandroid.data[0]['application_info']['appkey'] = 'b8e5e389e1223ffa16a5a9420258383d'
    # receiveandroid.data[0]['device_info']['device_id'] = i
    # receiveandroid.data[0]['device_info']['oaid'] = i
    # receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    # receiveandroid.data[0]["event_info"]['event_name'] = 'custom_event_99'
    # receiveandroid.data[0]["event_info"]['event_type'] = 'custom'
    # receiveandroid.send_request()
    print(i)


# 安卓精准归因-oaid归因,渠道的event事件
def test_atb46():
    i = code_nums(12)
    redirectandroid.parms['account_id'] = '123'
    redirectandroid.parms['oaid'] = i
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['application_info']['appkey'] = 'c54bbff0d3b5d986718eee951fa206cb'
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.send_request()
    time.sleep(3)
    receiveandroid.data[0]['application_info']['appkey'] = 'c54bbff0d3b5d986718eee951fa206cb'
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.data[0]["event_info"]['event_name'] = 'custom_event_100'
    receiveandroid.data[0]["event_info"]['event_type'] = 'custom'
    receiveandroid.send_request()
    print(i)


# -------------------展示归因-------------------------
# ************************精准归因验证************************
# 【新客获取展示精准归因开关】开,【新客获取展示概率IP+UA归因开关】开,【新客获取展示概率IP归因开关】开,传展示和激活数据(设备id,ip,ua相同),可精准归因
# 安卓精准归因-oaid归因
def test_impatb1():
    i = code_nums(12)
    uaclick = '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'
    ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectandroid.parms['oaid'] = i
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.parms['ua'] = uaclick
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.send_request3('')
    time.sleep(3)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.data[0]['device_info']['ua'] = ua
    redirectandroid.parms['ipv4'] = ip1
    receiveandroid.send_request()
    print(i)


# 设备优先级归因(imei1和imei2都有值,可归因到imei1)
def test_atbyxj():
    i = code_nums(12)
    i2 = code_nums(12)
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['imei1'] = i
    redirectandroid.parms['imei2'] = i2
    redirectandroid.send_request3('')
    time.sleep(10)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['imei1'] = i
    receiveandroid.data[0]['device_info']['imei2'] = i2
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.send_request()
    print(i)


# 【新客获取展示精准归因开关】开,【新客获取展示概率IP+UA归因开关】开,【新客获取展示概率IP归因开关】开,传展示和激活数据(设备id不同,ip,ua相同),可ip归因
def test_impatb2():
    # 点击激活oaid_md5为’5284047f4ffb4e04824a2fd1d1f0cd62‘,激活中其他参数与点击不同,ip相同,ua_click_fp_ip_switch为关闭/开启状态,不可/可归因
    i = code_nums(16)
    i2 = code_nums(16)
    o = '5284047f4ffb4e04824a2fd1d1f0cd62'
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid_md5'] = o
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip
    redirectandroid.send_request3('')
    time.sleep(3)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)
    print(ip)


# 【新客获取展示精准归因开关】开,【新客获取展示概率IP+UA归因开关】开,【新客获取展示概率IP归因开关】关,传展示和激活数据(设备id,ua不同,ip相同),不可归因(测一下是否影响ip归因,安卓没有ipua归因,所以在ipua开启时,ip关闭时,不可归因)
def test_impatb3():
    # 点击激活oaid_md5为’5284047f4ffb4e04824a2fd1d1f0cd62‘,激活中其他参数与点击不同,ip相同
    i = code_nums(16)
    i2 = code_nums(16)
    o = '5284047f4ffb4e04824a2fd1d1f0cd62'
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid_md5'] = o
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip
    redirectandroid.send_request3('')
    time.sleep(3)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)
    print(ip)


# ************************ip归因验证************************
# 【新客获取展示精准归因开关】开,【新客获取展示概率IP+UA归因开关】关,【新客获取展示概率IP归因开关】开,传展示和激活数据(ip相同),归因上ip
def test_impatb4():
    # 点击激活oaid_md5为’5284047f4ffb4e04824a2fd1d1f0cd62‘,激活中其他参数与点击不同,ip相同
    i = code_nums(16)
    i2 = code_nums(16)
    o = '5284047f4ffb4e04824a2fd1d1f0cd62'
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid_md5'] = o
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip
    redirectandroid.send_request3('')
    time.sleep(9)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)
    print(ip)


# 【新客获取展示精准归因开关】开,【新客获取展示概率IP+UA归因开关】关,【新客获取展示概率IP归因开关】开,传展示和激活数据(ip不相同),归因不上
def test_impatb5():
    # 点击激活oaid_md5为’5284047f4ffb4e04824a2fd1d1f0cd62‘,激活中其他参数与点击不同,ip相同
    i = code_nums(16)
    i2 = code_nums(16)
    o = '5284047f4ffb4e04824a2fd1d1f0cd62'
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ip2 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid_md5'] = o
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(3)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip2
    receiveandroid.send_request()
    print(a)
    print(ip)


# ************************【新客获取展示精准归因回溯窗口期】验证************************
# 【新客获取展示精准归因回溯窗口期】设置10秒,发送展示,5秒后发送激活,可精准归因上
# 【新客获取展示精准归因回溯窗口期】设置10秒,发送展示,11秒后发送激活,归因不上
# 共用一条测试用例,修改时间即可
def test_impatb6():
    i = code_nums(12)
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectandroid.parms['oaid'] = i
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.send_request3('')
    time.sleep(11)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    redirectandroid.parms['ipv4'] = ip1
    receiveandroid.send_request()
    print(i)


# ************************【新客获取展示概率IP归因回溯窗口期】验证************************
# 【新客获取展示精准归因回溯窗口期】设置60秒,发送展示,50秒后发送激活,可ip归因
# 【新客获取展示精准归因回溯窗口期】设置60秒,发送展示,65秒后发送激活,归因不上
def test_impatb7():
    i = code_nums(16)
    i2 = code_nums(16)
    o = '5284047f4ffb4e04824a2fd1d1f0cd62'
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid_md5'] = o
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip
    redirectandroid.send_request3('')
    time.sleep(50)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)
    print(ip)


# ************************归因优先级验证************************
# 有可用于精准归因的设备
# 精准归因,概率归因,精准展示,概率展示的有效期都为5分钟
# 先传点击,再传展示,然后激活(与点击,展示设备一致),可归因到点击(精准)
def test_impatb8():
    i = code_nums(12)
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ip2 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectandroid.parms['oaid'] = i
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(5)
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid'] = i
    redirectandroid.send_request3('')
    time.sleep(5)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.data[0]['device_info']['ipv4'] = ip2
    receiveandroid.send_request()
    print(i)

# 精准归因,概率归因,精准展示,概率展示的有效期都为5分钟
# 先传点击,再传展示,然后激活(与点击设备不一致,与展示设备一致,ip与点击展示都不一致),可归因到展示(精准)
def test_impatb9():
    i = code_nums(12)
    i2 = code_nums(12)
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ip2 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(5)
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid'] = i
    redirectandroid.send_request3('')
    time.sleep(5)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.data[0]['device_info']['ipv4'] = ip2
    receiveandroid.send_request()
    print(i)


# 先传点击,再传展示,然后激活(与点击设备不一致,与展示设备一致,ip与点击一致),可归因到点击(概率)
def test_impatb10():
    i = code_nums(12)
    i2 = code_nums(12)
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ip2 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(5)
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid'] = i
    redirectandroid.send_request3('')
    time.sleep(5)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.data[0]['device_info']['ipv4'] = ip1
    receiveandroid.send_request()
    print(i)


# 先传展示(设备id与激活一致),再传点击(ip与激活一致),然后激活,可归因到点击(概率)
def test_impatb11():
    i = code_nums(12)
    i2 = code_nums(12)
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    ip2 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid'] = i
    redirectandroid.parms['ipv4'] = ip2
    redirectandroid.send_request3('')
    time.sleep(5)
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(5)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.data[0]['device_info']['ipv4'] = ip1
    receiveandroid.send_request()
    print(i)


# 过了精准归因的有效期之后,可匹配上概率点击
# ua_click_deviceid_lbw有效期为10s,ua_imp_deviceid_lbw为20s,ua_click_fp_ip_lbw为300s
# 先发送点击,5秒后发送展示,8秒后发送激活
def test_impatb12():
    i = code_nums(12)
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectandroid.parms['oaid'] = i
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(5)
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid'] = i
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(8)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.data[0]['device_info']['ipv4'] = ip1
    receiveandroid.send_request()
    print(i)


# 过了精准/概率归因的有效期之后,可匹配上精准展示
# ua_click_deviceid_lbw有效期为10s,ua_click_fp_ip_lbw为15s,ua_imp_deviceid_lbw为20s
# 先发送点击,5秒后发送展示,12秒后发送激活
def test_impatb13():
    i = code_nums(12)
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectandroid.parms['oaid'] = i
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(5)
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid'] = i
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(12)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.data[0]['device_info']['ipv4'] = ip1
    receiveandroid.send_request()
    print(i)


# 过了精准/概率,精准展示归因的有效期之后,可匹配上概率展示
# ua_click_deviceid_lbw有效期为10s,ua_click_fp_ip_lbw为15s,ua_imp_deviceid_lbw为20s,ua_imp_ip_lbw为300s
# 先发送点击,5秒后发送展示,12秒后发送激活
def test_impatb14():
    i = code_nums(12)
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    redirectandroid.parms['oaid'] = i
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(5)
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid'] = i
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(20)
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.data[0]['device_info']['ipv4'] = ip1
    receiveandroid.send_request()
    print(i)


# 无可用与精准归因的设备
# 先传点击,再传展示,然后激活(与点击,展示设备一致),可归因到点击(概率)
def test_impatb15():
    # 点击激活oaid_md5为’5284047f4ffb4e04824a2fd1d1f0cd62‘,激活中其他参数与点击不同,ip相同
    i = code_nums(16)
    i2 = code_nums(16)
    o = '5284047f4ffb4e04824a2fd1d1f0cd62'
    # redirectandroid.parms['oaid_md5'] = o
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip
    redirectandroid.send_request3('')
    time.sleep(3)
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip
    redirectandroid.send_request3('')
    time.sleep(3)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)
    print(ip)


# 先传点击,再传展示,然后激活(与点击设备不一致,与展示设备一致),可归因到展示(概率)
def test_impatb16():
    # 点击激活oaid_md5为’5284047f4ffb4e04824a2fd1d1f0cd62‘,激活中其他参数与点击不同,ip相同
    i = code_nums(16)
    i2 = code_nums(16)
    ip1 = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    o = '5284047f4ffb4e04824a2fd1d1f0cd62'
    # redirectandroid.parms['oaid_md5'] = o
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip1
    redirectandroid.send_request3('')
    time.sleep(3)
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid'] = i2
    redirectandroid.parms['ipv4'] = ip
    redirectandroid.send_request3('')
    time.sleep(3)
    receiveandroid.data[0]['device_info']['device_id'] = a
    receiveandroid.data[0]['device_info']['device_id_type'] = 'imei1'
    receiveandroid.data[0]['device_info']['oaid'] = ''
    receiveandroid.data[0]['device_info']['oaid_md5'] = o
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['imei2'] = ''
    receiveandroid.data[0]['device_info']['imei2_md5'] = ''
    receiveandroid.data[0]['device_info']['mac'] = ''
    receiveandroid.data[0]['device_info']['mac_md5'] = ''
    receiveandroid.data[0]['device_info']['imei1'] = a
    receiveandroid.data[0]['device_info']['imei1_md5'] = ''
    receiveandroid.data[0]['device_info']['gaid'] = ''
    receiveandroid.data[0]['device_info']['gaid_md5'] = ''
    receiveandroid.data[0]['device_info']['android_id_md5'] = computeMD5(i)
    receiveandroid.data[0]['device_info']['android_id'] = i
    receiveandroid.data[0]['device_info']['ipv4'] = ip
    receiveandroid.send_request()
    print(a)
    print(ip)







# 单独的点击
def test_click():
    i = code_nums(12)
    redirectandroid.parms['touchpoint_type'] = 'impression'
    redirectandroid.parms['oaid'] = '90tg5ut753a2'
    redirectandroid.send_request3('')
    print(i)


# 单独的激活
def test_install():
    i = 'acr4n9muc39v'
    receiveandroid.data[0]['device_info']['device_id'] = i
    receiveandroid.data[0]['device_info']['oaid'] = i
    receiveandroid.data[0]['device_info']['device_id_type'] = 'oaid'
    receiveandroid.send_request()