def test_valume(self):
        print json.loads(getConf("data", "lite_player")).values()
        player_ids = ",".join(str(x).encode("utf-8") for x in json.loads(getConf("data", "lite_player")).values())
        start_time = getNowTime()
        print start_time

        ''' step1 设置音量值 '''
        valume_value = 50
        task_id = 16
        response = rq_command(task_id=task_id, value=valume_value, player_ids=player_ids)
        print response
        '''check1: 音量控制命令返回'''
        self.assertTrue(response["status"] == [11312001], 'lite 音量调节失败')
        time.sleep(5)


        '''step2: 音量控制 日志查询'''
        end_time = getNowTime()
        print end_time
        response = rq_commandHistory(player_ids=player_ids, ttid=9, synPlatform=1, asyPlatform=4,
                                      start_time=start_time, end_time=end_time, status='1,2', offset=0, limit=100,
                                      sort='start_time', sortType='desc')
        print response

        '''check2: 验证音量控制命令日志'''
        self.assertTrue(response["status"] == [10000001], 'lite 获取音量调节日志失败')

        '''验证返回的日志结果'''
        assertControlLog(self,response,"音量调节",ratio=valume_value,scheduledTaskstatus=1,task_id=task_id)
Beispiel #2
0
def rq_program(url=getConf("constant", "vnnoxlite_url"),
               search='',
               offset='',
               limit='',
               sort='',
               sortType='',
               token=getConf("data", "token")):
    '''
     获取Vnnox节目列表
  :param1   search
  :param2   offset
  :param3   limit
  :param4   sort
  :param5   sortType
  :return  type:json response
  :example response = rq_program(search='',offset=1,limit=20,sort='update_time',sortType='desc')

'''

    headers = getHearders(token)
    data = {
        "search": search,
        "offset": offset,
        "limit": limit,
        "sort": sort,
        "sortType": sortType
    }
    data = urllib.urlencode(data)
    print data
    response = requests.get(url=url + "/Rest/Lite/program?" + data,
                            headers=headers,
                            verify=False)
    return json.loads(response.text)
Beispiel #3
0
def assertControlLog(self,response,description,noApply=[],**kwargs):
    flag = True
    for playername in json.loads(getConf("data", "lite_player")).keys():
        flag1 = False
        for execution in response["data"]["executionList"]:
            if playername == execution["playerName"]:
                flag1 = True
                for key in kwargs.keys():
                    if str(execution[key])!=str(kwargs[key]):
                        flag = False
                        print playername.encode("utf-8") + "日志中的"+key.encode("utf-8")+"值为"+str(execution[key])+" 期望值为"+str(kwargs[key])
                break
        if not flag1:
            if noApply:
                flag88 = False
                for key in getAllKey("searchRes"):
                    if key[-8:]==playername[-8:]:
                        if json.loads(getConf("searchRes",key))["productName"] in noApply :
                            flag88 = True
                if not flag88:
                    flag = False
                    print playername.encode("utf-8") + "没有生成" + description + "日志"

            else:
                flag = False
                print playername.encode("utf-8") + "没有生成"+description+"日志"
    self.assertTrue(flag,description+"日志未全部正确上报")
Beispiel #4
0
    def test_HDMI(self):
        print json.loads(getConf("data", "lite_player")).values()
        player_ids = ",".join(str(x).encode("utf-8") for x in json.loads(getConf("data", "lite_player")).values())
        start_time = getNowTime()
        print start_time
        task_id = 8
        ''' step1 设置HDMI源 '''
        response = rq_command(task_id=task_id, player_ids=player_ids)
        print response
        '''check1: 设置HDMI源命令返回'''
        self.assertTrue(response["status"] == [11312001], 'lite 设置HDMI源失败')
        time.sleep(5)

        '''step2: 设置HDMI源 日志查询'''
        end_time = getNowTime()

        print end_time
        response = rq_commandHistory(player_ids=player_ids, ttid=4, synPlatform=1, asyPlatform=2,
                                      start_time=start_time, end_time=end_time, status='1,2', offset=0, limit=100,
                                      sort='start_time', sortType='desc')
        print response

        '''check2: 验证设置HDMI源命令日志'''
        self.assertTrue(response["status"] == [10000001], 'lite 获取HDMI源日志失败')

        '''验证返回的日志结果'''
        assertControlLog(self, response,"设置HDMI源", noApply=["T1-4G", "T3"], task_id=task_id, scheduledTaskstatus=1, )
Beispiel #5
0
def rq_PlayerProgramProgress(url=getConf("constant", "vnnoxlite_url"),
                             token=getConf("data", "token")):
    '''
     获取Vnnox播放器
  :return      type:json response
  :example      response = rq_PlayerProgramProgress()
'''

    headers = getHearders(token)
    response = requests.get(url=url + "/Rest/Lite/PlayerProgramProgress",
                            headers=headers,
                            verify=False)
    return json.loads(response.text)
Beispiel #6
0
def rq_commandHistory(url=getConf("constant", "vnnoxlite_url"),
                      player_ids='',
                      ttid='',
                      synPlatform='',
                      asyPlatform='',
                      start_time='',
                      end_time='',
                      status='',
                      offset='',
                      limit='',
                      sort='',
                      sortType='',
                      token=getConf("data", "token")):
    '''
     获取日志
  :param1   player_ids  type:str(多个用 , 分隔) 屏体 id
  :param2   start_time  type:y%-m%-d H:M:S  开始时间
  :param2   end_time    type:y%-m%-d H:M:S  结束时间
  :param3   ttid         控制类型  1:重启  2:屏幕状态  3:同步播放  4:视频源  8:屏体电源  9:音量  10:亮度
  :param4   synPlatform  命令来源  1
  :param5   asyPlatform  命令来源   2 : 视频源,重启 ,屏幕状态 同步播放 4 :亮度,音量,屏体电源                       vnnox (synPlatform:1 asyPlatform:2)   其它: (synPlatform:100,100,100,2   asyPlatform:100,100,100,1)
  :param6   status       执行结果   成功:1  失败:2
  :param7   offset       默认值 0
  :param8    limit       每页条数  20
  :param9    sort        默认值  start_time
  :param10   sortType    默认值  desc
  :return  type:json response
  :example response = rq_commandHistory(player_ids=getConf("data","id"),ttid=8,synPlatform=1,asyPlatform=2,start_time='2019-01-16 00:00:00',end_time='2019-01-17 23:59:59',status='1,2',offset=0,limit=20,sort='start_time',sortType='desc')

'''

    headers = getHearders(token)

    data = {
        "player_id": player_ids,
        "ttid": ttid,
        "filters[synPlatform]": synPlatform,
        "filters[asyPlatform]": asyPlatform,
        "filters[start_time]": start_time,
        "filters[end_time]": end_time,
        "filters[status]": status,
        "offset": offset,
        "limit": limit,
        "sort": sort,
        "sortType": sortType
    }
    response = requests.get(url=url + "/Rest/Lite/commandHistory",
                            headers=headers,
                            params=data,
                            verify=False)
    return json.loads(response.text)
Beispiel #7
0
def rq_Playerdelete(url=getConf("constant", "vnnoxlite_url"),
                    id='',
                    token=getConf("data", "token")):
    '''
    删除Vnnox播放器
 :param1   id   type:int  vnnox播放器id
 :return       type:json response
 :example       response = rq_Playerdelete(id = 13388)
'''
    headers = getHearders(token)
    response = requests.delete(url=url + "/Rest/Lite/Player/" + str(id),
                               headers=headers,
                               verify=False)
    return json.loads(response.text)
Beispiel #8
0
def rq_correctTime(url=getConf("constant", "vnnoxlite_url"),
                   timezone='',
                   type='',
                   nodeUrl='',
                   player_ids='',
                   base_player_id='',
                   group_id=0,
                   is_base=0,
                   is_ntp=0,
                   token=getConf("data", "token")):
    '''
     对时
  :param1  type       type:int                 1:NTP对时 2: 射频对时  3:手动对时
  :param2  nodeUrl    type:str                 cn or '': 服务器中国  us: 服务器美国   else:  自定义服务器
  :param3  timezone   type:str                 时区
  :param4 player_ids  type:str(多个用 , 分隔) 屏体 id
  :param5 base_player_id  默认值
  :param6 group_id 默认值
  :param7 is_base  默认值
  :param8 is_ntp   默认值
  :return  type:json response
  :example  response = rq_correctTime(type=3,nodeUrl='cn',player_ids=getConf("data","id"),timezone ="Asia/Shanghai")

'''

    headers = getHearders(token)
    if nodeUrl == 'us':
        nodeUrl = 'us.ntp.org.cn'
    elif nodeUrl == 'cn' or nodeUrl == '':
        nodeUrl = 'ntp1.aliyun.com'
    else:
        nodeUrl = nodeUrl

    data = {
        "timezone": timezone,
        "player_ids": player_ids,
        "base_player_id": base_player_id,
        "type": type,
        "group_id": group_id,
        "is_base": is_base,
        "is_ntp": is_ntp,
        "nodeUrl": nodeUrl
    }
    print data
    response = requests.post(url=url + "/Rest/Lite/correctTime/generate",
                             headers=headers,
                             data=json.dumps(data),
                             verify=False)
    return json.loads(response.text)
Beispiel #9
0
def assertOSVersion(self):
    result = getFireWareVersion(self)
    version1 = getConf("data","os3368version").split("V")[1]
    version2 = getConf("data","os3128version").split("V")[1]
    flag = True
    for i in self.sns:
        li = result[i]
        v = li["model"].split("V")[1]
        if li in [Constant.ERROR,Constant.FAILED,Constant.NOAPPLY]:
            print i + ":" + str(li)
            flag = False
        elif not ((version1==v) or (version2==v)):
            flag = False
            print i + "的系统版本号与预期不相符:"+str(li["model"])
    self.assertTrue(flag,"系统存在与预期不相符的版本号")
    def test_careRegister(self):
        u'''step1:将T卡注册至care'''
        url = getConf("constant", "care_url")
        username = getConf("constant", "care_username")
        flag = careRegister(self, url, username)
        u'''check1: 是否全部注册成功'''
        self.assertTrue(flag, "未全部注册成功")
        time.sleep(3)
        u''' step2: 获取T卡care配置信息 '''
        result = getCareInfo(self)
        print result
        u'''check2: 查看care配置信息是否与注册信息一致 '''
        assertCareResult(self, result, url, username)

        self.assertTrue(self.isLoginAll, "有未登录的终端")
Beispiel #11
0
def updateOS(self):
    """
    升级OS(注意:请将OS升级包放在工程src/file/update/OS 目录下)
    :param   self      必须
    :return  flag      升级系统的命令是否全部成功下发,注意:不代表系统升级成功 
    :return  version   要升级的版本号
    :example flag,version =  updateOS(self)
    """
    sns_3368 = []
    sns_3128 = []
    for sn in self.sns:
        platform = json.loads(getConf("searchRes", sn))["platform"].encode()
        if "336" in platform:
            sns_3368.append(sn)
        elif "312" in platform:
            sns_3128.append(sn)
        else:
            raise RuntimeError("未知型号:" + platform)
    flag1 = True
    flag2 = True
    if sns_3368:
        print "shengji 3368"
        flag1 = update(self, type="OS3368", sns=sns_3368)

    if sns_3128:
        print "shengji 3128"
        flag2 = update(self, type="OS3128", sns=sns_3128)
    return flag1 and flag2
Beispiel #12
0
def rq_vnnoxLiteplayer(
        url=getConf("constant", "vnnoxlite_url"), username="", password=""):
    url = url + '/Rest/Players'
    data = {"username": username, "password": password, "playerType": 2}
    #请求vnnox获取播放器列表
    response = requests.post(url=url, json=data, verify=False)
    return json.loads(response.text)
 def test_manual(self):
     '''   手动 对时  '''
     player_ids = ",".join(str(x).encode("utf-8") for x in json.loads(getConf("data", "lite_player")).values())
     response = rq_correctTime(type=3,nodeUrl='cn',player_ids=player_ids,timezone ="Asia/Shanghai")
     print response
     u'check'
     self.assertTrue(response["status"] == [10000001] ,'lite 设置手动对时失败')
     assertTimeModel(self, model=3)
Beispiel #14
0
    def test_restart(self):
        player_ids = ",".join(
            str(x).encode("utf-8")
            for x in json.loads(getConf("data", "lite_player")).values())
        start_time = getNowTime()
        print start_time
        task_id = 1
        ''' step1 重启 '''
        response = rq_command(task_id=task_id, player_ids=player_ids)
        print response
        '''check1: 重启命令返回'''
        self.assertTrue(response["status"] == [11312001],
                        'this Command is failed')
        time.sleep(20)

        for i in range(20):
            '''step2: 重启 日志查询'''
            print "第" + str(i + 1) + "次查询"
            time.sleep(3)
            end_time = getNowTime()
            response = rq_commandHistory(player_ids=player_ids,
                                         ttid=1,
                                         synPlatform=1,
                                         asyPlatform=2,
                                         start_time=start_time,
                                         end_time=end_time,
                                         status='1,2',
                                         offset=0,
                                         limit=100,
                                         sort='start_time',
                                         sortType='asc')
            if response["data"]["count"] == len(
                    json.loads(getConf("data", "lite_player")).keys()):
                print end_time
                print response
                break
        '''check2: 验证设置同步播放命令日志'''
        self.assertTrue(response["status"] == [10000001],
                        'this Command is failed')
        '''验证返回的日志结果'''
        assertControlLog(self,
                         response,
                         "设置同步播放",
                         task_id=task_id,
                         scheduledTaskstatus=1)
 def test_brightness(self):
     print json.loads(getConf("data", "lite_player")).values()
     player_ids = ",".join(
         str(x).encode("utf-8")
         for x in json.loads(getConf("data", "lite_player")).values())
     start_time = getNowTime(addHours=-8)
     print start_time
     ''' step1 设置亮度值 '''
     bright_value = 60
     task_id = 17
     response = rq_command(task_id=task_id,
                           value=bright_value,
                           player_ids=player_ids)
     print response
     '''check1: 亮度控制命令返回'''
     self.assertTrue(response["status"] == [11312001], 'lite设置亮度失败')
     time.sleep(5)
     '''step2: 亮度控制 日志查询'''
     end_time = getNowTime(addHours=-8)
     print end_time
     # time.sleep(10)
     response1 = rq_commandHistory(player_ids=player_ids,
                                   ttid=10,
                                   synPlatform=1,
                                   asyPlatform=4,
                                   start_time=start_time,
                                   end_time=end_time,
                                   status='1,2',
                                   offset=0,
                                   limit=50,
                                   sort='start_time',
                                   sortType='desc')
     print response1
     '''check2: 验证亮度控制命令日志'''
     self.assertTrue(response1["status"] == [10000001], 'lite获取亮度日志失败')
     '''验证返回的日志结果'''
     assertControlLog(self,
                      response1,
                      "亮度调节",
                      ratio=bright_value,
                      scheduledTaskstatus=1,
                      task_id=str(task_id))
Beispiel #16
0
def udp_receive_data(self):
    s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
    hostname = socket.gethostname()
    ip = socket.gethostbyname(hostname)
    s.settimeout(6)
    s.bind((ip, Constant.UDP_HAND_LISTEN_PORT))
    data = getConf("data","sn")
    if self:
        self.searchRes = {}
    if data :
        sns = data.split(",")
        while True:
            try:
                data, address = s.recvfrom(1024)
                a = data[24:]
                info = json.loads(a)
                info["addr"] = address[0]
                strn = json.dumps(info)
                sn = info["sn"].encode('utf-8').lower()
                for i in sns:
                    if i in sn:
                        if self:
                            self.searchRes[sn] = info
                        else:
                            setConf("searchRes",sn,strn)
                        sns.remove(i)
                        break
                if not sns:
                    return
            except socket.timeout:
                    s.close()
                    if sns:
                        if self:
                            return
                        print "未搜索到屏体:" + str(sns)
                        setConf("data","bad_sn",str(sns))
                    return
    else:
        while True:
            try:
                data, address = s.recvfrom(1024)
                a = data[24:]
                info = json.loads(a)
                info["addr"] = address[0]
                strn = json.dumps(info)
                sn = info["sn"].encode('utf-8').lower()
                if self:
                    self.searchRes[sn] = info
                else:
                    setConf("searchRes", sn, strn)
            except socket.timeout:
                    s.close()
                    return
Beispiel #17
0
def getLoginBuffer(key):
    data = {}
    data["sn"] = key.upper()
    data["username"] = '******'
    data['password'] = getConf('constant', 'login_password')
    data['loginType'] = 0
    source = {}
    source['type'] = 1
    source['platform'] = 1
    data['source'] = source
    buffer = getPacket(sequence=-1,type=0x5251,param1=0x00,data=str(data))
    return buffer
Beispiel #18
0
def rq_generatePlan(url=getConf("constant", "vnnoxlite_url"),
                    player_id='',
                    program_id='',
                    token=getConf("data", "token")):
    '''
    发布节目
  :param1   player_id  type:list   播放器id
  :param2   program_id type:int    节目 id
  :return  type:json response
  response = rq_generatePlan(player_id=getConf("data","id").split(','),program_id=getConf("data","program_id"))

'''

    headers = getHearders(token)
    data = {"player_id": player_id, "program_id": program_id}
    print data
    response = requests.post(url=url + "/Rest/Lite/generatePlan",
                             headers=headers,
                             json=data,
                             verify=False)
    return json.loads(response.text)
Beispiel #19
0
def assertAPPVersion(self):
    result = getFireWareVersion(self)
    version = getConf("data","appversion")
    flag = True
    for i in self.sns:
        li = result[i]
        if li in [Constant.ERROR,Constant.FAILED,Constant.NOAPPLY]:
            print i + ":" + str(li)
            flag = False
        elif li["mainVersion"]!= version:
            flag = False
            print i + "的软件版本号与预期不相符:"+li["mainVersion"]
    self.assertTrue(flag,"终端存在与预期不相符的版本号")
def assertBindInfo(self, vnnoxLite_player_url, vnnoxLite_play_user):
    '''通过终端检验'''
    flag = True
    result = getBindInfo(self)
    print result
    for sn in result.keys():
        info = result[sn]
        if info in [Constant.ERROR, Constant.FAILED, Constant.NOAPPLY]:
            print sn + "获取绑定信息失败"
            flag = False
        elif not info["isBind"]:
            print sn + "未绑定"
            flag = False
        elif info["baseUrl"] != vnnoxLite_player_url or info[
                "username"] != vnnoxLite_play_user:
            print sn + "已绑定,但绑定信息与配置文件不符"
            flag = False
    '''在vnnox端检验'''
    flag1 = True
    res = rq_PlayerProgramProgress(url=getConf("constant", "vnnoxlite_url"))
    print res
    binded_player = {}
    for i in res["data"]:
        binded_player[i["name"].encode("utf-8")] = i["id"].encode("utf-8")
    lite_player = {}
    for sn in self.sns:
        aliasName = json.loads(getConf("searchRes",
                                       sn))["aliasName"].encode("utf-8")
        if aliasName in binded_player.keys():
            lite_player[aliasName] = binded_player[aliasName]
        else:
            flag1 = False
            print aliasName + "未在vnnoxlite注册成功"
    '''将player_id写入配置文件'''
    setConf("data", "lite_player", json.dumps(lite_player))

    if flag and flag1:
        print "全部绑定成功"
    self.assertTrue(flag and flag1, "未全部绑定成功")
    def test_openScreen(self):
        print json.loads(getConf("data", "lite_player")).values()
        player_ids = ",".join(
            str(x).encode("utf-8")
            for x in json.loads(getConf("data", "lite_player")).values())
        start_time = getNowTime()
        print start_time
        task_id = "2"
        ''' step1 开屏 '''
        response = rq_command(task_id=task_id, player_ids=player_ids)
        print response
        '''check1: 开屏命令返回'''
        self.assertTrue(response["status"] == [11312001], 'lite开屏命令失败')
        time.sleep(5)
        '''step2: 开屏 日志查询'''
        end_time = getNowTime()

        print end_time
        response = rq_commandHistory(player_ids=player_ids,
                                     ttid=2,
                                     synPlatform=1,
                                     asyPlatform=2,
                                     start_time=start_time,
                                     end_time=end_time,
                                     status='1,2',
                                     offset=0,
                                     limit=100,
                                     sort='start_time',
                                     sortType='desc')
        print response
        '''check2: 验证设置开屏命令日志'''
        self.assertTrue(response["status"] == [10000001], 'lite获取屏幕状态日志失败')
        '''验证返回的日志结果'''
        assertControlLog(self,
                         response,
                         "开屏",
                         task_id=task_id,
                         scheduledTaskstatus=1)
Beispiel #22
0
def assertTimeModel(self,model=0):
    '''
    :param self: 
    :param model: 3:手动对时    1:NTP对时     2:lora对时
    :return: bool
    '''
    time.sleep(3)
    result = getTimeModel(self)
    flag = True
    for name in json.loads(getConf("data", "lite_player")).keys():
        if result[name.split("-")[1]] != model:
            print name.encode("utf-8") + "对时模式为:" + str(result[name.split("-")[1]])+"    期望值为:"+str(model)
            flag = False
    self.assertTrue(flag)
Beispiel #23
0
def rq_command(url=getConf("constant", "vnnoxlite_url"),
               task_id='',
               value='',
               player_ids='',
               token=getConf("data", "token")):
    '''
    播放器控制
  :param1   task_id   1:重启   2: 屏幕状态控制 正常显示    3:屏幕状态控制 黑屏  4:同步播放   8: 视频源控制 HDMI   9:视频源控制 内部   16: 音量控制  17 :亮度控制
  :param2    value        type:
  :param3    player_ids   type:str(多个用 , 分隔)   播放器id
  :return  type:json response
  :example  response = rq_command(task_id=1,player_ids=getConf("data","id"))

'''

    headers = getHearders(token)
    data = {"task_id": task_id, "value": value, "player_ids": player_ids}
    print data
    response = requests.post(url=url + "/Rest/Lite/command",
                             headers=headers,
                             json=data,
                             verify=False)
    return json.loads(response.text)
Beispiel #24
0
def rq_clearMedia(url=getConf("constant", "vnnoxlite_url"),
                  player_ids='',
                  scope='',
                  type='',
                  token=getConf("data", "token")):
    '''
    监控 媒体清理

  :param1  player_ids type:list  播放器id
  :param2   scope   type:int  1:不包括清理正在播放的媒体 99:清理所有媒体
  :param3   type   默认值
  :return  type:json response
  :example response = rq_clearMedia(scope=1,player_ids=getConf("data","id").split(','),type="CLEAR_MEDIA")

'''

    headers = getHearders(token)
    data = {"player_ids": player_ids, "scope": scope, "type": type}
    print data
    response = requests.post(url=url + "/Rest/Lite/clearMedia",
                             headers=headers,
                             json=data,
                             verify=False)
    return json.loads(response.text)
Beispiel #25
0
def searchT(self=None):
    if not self:
        removeSection("searchRes")
        addSection("searchRes")
        setConf("data","bad_sn","")
        print "search and login terminal"
    buffer = getPacket(type=-30635,param1=0x81)
    t = threading.Thread(target=udp_receive_data,args=(self,))
    t.start()
    time.sleep(1)
    udp_send_data(buffer)
    t.join()
    if getConf("data","bad_sn"):
        return False
    else:
        return True
Beispiel #26
0
    def test_publish(self):

        '''获取第一个节目'''
        response = rq_program(search='', offset=1, limit=20, sort='update_time', sortType='desc')
        print response
        u'check'
        self.assertTrue(response["status"] == [10000001], 'lite获取节目失败')
        print response["data"]["programList"][0]["id"]
        setConf("data", "program_id", response["data"]["programList"][0]["id"])
        program_id = response["data"]["programList"][0]["id"]


        '''发布 vnnoxLite节目  '''
        player_ids = json.loads(getConf("data", "lite_player")).values()
        response = rq_generatePlan(player_id=player_ids,program_id=program_id)
        print response
        u'check'
        self.assertTrue(response["status"] == [110250010101] ,'lite发布节目失败')
Beispiel #27
0
def downloadFile(self, user='', filepath='', ftpfiles={}, filetype='png'):
    '''
     下载文件
    :param1   self        必须
    :param2   user        用户名
    :param3   filepath    本地存放目录
    :param4   ftpfile      需下载的文件的绝对路径
    :return  Flag  bool    
    :example flag = downloadFile(self,user='',filepath='',ftpfile='')
    '''
    if user == "admin":
        portName = "ftpPort"
    elif user == "supervisor":
        portName = "syssetFtpPort"
    else:
        print "ftp用户名不存在"
    result = {}
    for sn in self.sns:
        if ftpfiles[sn] == "FAILED":
            result[sn] = False
            continue
        try:
            res = json.loads(getConf("searchRes", sn))
            ip = res["addr"]
            port = res[portName]
            passwordkey = res["key"]
            password = str(sn)[-8:] + '@' + passwordkey
            ftp = FTP()
            ftp.connect(ip, port)
            ftp.login(user, password)
            bufsize = 1024
            filename = sn + "." + filetype
            file = os.path.join(filepath, filename)
            if os.path.exists(file):
                os.remove(file)
            ftpfile = ftpfiles[sn]
            file_handler = open(file, 'wb')
            ftp.retrbinary("RETR %s" % (ftpfile), file_handler.write, bufsize)
            file_handler.close()
            result[sn] = True
        except Exception, e:
            result[sn] = False
            print sn + ":" + e.message
        finally:
def bind_vnnoxLite(self, Server_address='', username='', password=''):
    '''
    绑定lite播放器        
    :param1   self    必须
    :param2  Server_address    vnnox认证播放器地址     
    :param3  username    vnnox认证播放器用户名
    :param3  password    vnnox认证播放器密码
    :return  flag bool型   是否下发成功   
    :example1 flag=bind_VnnoxLite(self,Server_address="cn",username="******",password="******")
    :example2 flag=bind_VnnoxLite(self,Server_address="https://api-cn.vnnox.com",username="******",password="******")
    :example3 flag=bind_VnnoxLite(self,Server_address="China",username="******",password="******")               
'''
    flag = True
    result = getBindInfo(self)

    bindedSn = []
    for sn in result.keys():
        info = result[sn]
        if info in [Constant.ERROR, Constant.FAILED, Constant.NOAPPLY]:
            print sn + "获取绑定vonnox信息失败"
        elif info["isBind"]:
            bindedSn.append(sn)

    if bindedSn:
        print "解绑:" + str(bindedSn)
        '''获取unbind_token'''
        vnnoxlite_url_unbind = getConf("constant", "vnnoxlite_url_unbind")
        vnnoxlite_username_unbind = getConf("constant",
                                            "vnnoxlite_username_unbind")
        vnnoxlite_password_unbind = getConf("constant",
                                            "vnnoxlite_password_unbind")
        response = rq_Logon(vnnox_url=vnnoxlite_url_unbind,
                            username=vnnoxlite_username_unbind,
                            password=vnnoxlite_password_unbind)
        self.assertTrue(10106001 in response["status"], "获取token失败")

        # setConf("data", "token_unbind", response["data"]["token"])

        threads = []
        for sn in bindedSn:
            aliasName = json.loads(getConf("searchRes",
                                           sn))["aliasName"].encode("utf-8")
            t = threading.Thread(target=unBind_vonnoxLite,
                                 args=(self, aliasName, vnnoxlite_url_unbind,
                                       vnnoxlite_username_unbind,
                                       response["data"]["token"]))
            threads.append(t)
            t.start()
        for t in threads:
            t.join()
    time.sleep(1)
    print "开始绑定"
    getBindInfo(self)
    info = get_vnnoxLiteplayer(Server_address, username, password)
    if not info:
        print "info wei kong"
        return False
    #组织data
    data = {}
    data["baseUrl"] = Server_address
    data["password"] = password
    data["username"] = username
    data1 = {}
    playerList = {}
    playerList["identifier"] = ""
    playerList["isUsed"] = False
    playerList["name"] = info["player"]["name"]
    playerList["playerIdentifier"] = ""
    data1["playerList"] = [playerList]
    data1["token"] = info["token"]
    data["data"] = data1
    # print data
    threads2 = []
    for sn in self.sns:

        def bindLite(self, sn, data):
            #绑定vonnoxlite
            identifier = get_playerIdentifier(Server_address, info["token"])
            if identifier:
                data = copy.deepcopy(data)
                data["data"]["playerList"][0]["identifier"] = identifier
                data["data"]["playerList"][0]["playerIdentifier"] = sn.upper()
                # print identifier+":"+sn.upper()
                flag = sendSetCommand(self,
                                      Constant.WHAT_PLAYER_BINDING,
                                      Constant.TYPE_VNNOX_BINDINFO,
                                      Constant.ACTION_SET,
                                      0,
                                      data=data,
                                      sns=[sn],
                                      timeout=8,
                                      describe="绑定lite播放器")
                # print flag
            else:
                print "未获取到identifier"
                return

        t = threading.Thread(target=bindLite, args=(self, sn, data))
        threads2.append(t)
        t.start()
    for t in threads2:
        t.join()
Beispiel #29
0
def uploadFile(self, user='', file='', ftpdir={}, sns=None):
    '''
            上传文件
    :param1   self        必须
    :param2   file        要上传文件(绝对路径)
    :param4   ftpdir      T卡ftp服务器目录(绝对路径) 字典或者字符串
    :param5   user        用户名
    :return  Flag         bool 是否全部上传成功  
    :example flag=uploadFile(self,file='',sn=[],user='',ftpdir=''):
    '''
    if sns == None:
        sns = self.sns
    if user == "admin":
        portName = "ftpPort"
    elif user == "supervisor":
        portName = "syssetFtpPort"
    else:
        print "ftp用户名不存在"
    result = {}
    for sn in sns:
        if isinstance(ftpdir, dict):
            if ftpdir[sn] == "FAILED":
                result[sn] = False
                print "获取目录有失败的"
                continue
        res = json.loads(getConf("searchRes", sn))
        ip = res["addr"]
        port = res[portName]
        passwordkey = res["key"].encode("utf-8")
        password = sn[-8:] + '@' + passwordkey
        try:
            ftp = FTP()
            ftp.connect(ip, port)
            ftp.login(user, password)
            bufsize = 1024
            if isinstance(ftpdir, dict):
                ftppath = ftpdir[sn]
            elif isinstance(ftpdir, str):
                ftppath = ftpdir
            else:
                raise TypeError("参数fitdir类型错误")
            if os.path.isfile(file):
                filename = os.path.basename(file)
                file_handler = open(file, 'rb')
                ftpabsfile = ftppath + '/' + filename

                ftp.storbinary('STOR %s' % ftpabsfile, file_handler, bufsize)
                file_handler.close()
                result[sn] = True
            else:
                filenames = os.listdir(file)
                for filename in filenames:
                    ftpabsfile = ftppath + '/' + filename
                    localabsfile = file + '\\' + filename
                    if not os.path.isfile(localabsfile):
                        print localabsfile
                        print "不是一个文件"
                        continue
                    file_handler = open(localabsfile, 'rb')
                    ftp.storbinary('STOR %s' % ftpabsfile, file_handler,
                                   bufsize)
                    file_handler.close()
                    result[sn] = True
        except Exception, e:
            result[sn] = False
            print sn + ":" + e.message
        finally:
Beispiel #30
0
def rq_profile(url=getConf("constant", "vnnoxlite_url"),
               token=getConf("data", "token")):
    headers = getHearders(token)
    url = url + "/Rest/Lite/profile"
    response = requests.get(url=url, headers=headers)
    return json.loads(response.text)