summaryrefslogtreecommitdiff
path: root/automated/linux/ota-update/ota-update.py
blob: 9668f922193ed26c65773a2910509995f76c8b7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import requests
import json
import yaml
import time
import sys
import os
from argparse import ArgumentParser

sys.path.insert(0, '../../lib/')
import py_test_lib  # nopep8

OUTPUT = '%s/output' % os.getcwd()
RESULT_FILE = '%s/result.txt' % OUTPUT

parser = ArgumentParser()
parser.add_argument("-d", "--device", dest="devicename", default="hikey-r2-01",
                    help="Device Name to be updated")
parser.add_argument("-is", "--installed-sha", dest="installed_sha", default="",
                    help="OTA update sha")
parser.add_argument("-us", "--update-sha", dest="update_sha", default="",
                    help="OTA update sha")
args = parser.parse_args()
url = "http://api.ota-prototype.linaro.org/devices/%s/" % args.devicename
headers = {
    "OTA-TOKEN": "BadT0ken5",
    "Content-type": "application/json"
}
data = json.dumps({"image": {"hash": args.update_sha}})


def match_sha_on_server(sha):
    loop = 0
    while loop < 20:
        r = requests.get(url, headers=headers)
        resp = yaml.load(r.text)
        currentsha_on_server = resp.get("deviceImage").get("image").get("hash").get("sha256")
        if currentsha_on_server == sha:
            return 0
        loop = loop + 1
        time.sleep(30)
        if loop == 10:
            print "FAIL: Installed sha on device did not match"
            return -1

if match_sha_on_server(args.installed_sha) == 0:
    py_test_lib.add_result(RESULT_FILE, "installed-device-sha-match-server pass")
    r = requests.put(url, data=data, headers=headers)
    if match_sha_on_server(args.update_sha) == 0:
        py_test_lib.add_result(RESULT_FILE, "ota-update-to-%s pass" % args.update_sha)
        print "PASS: %s updated to %s successfully" % (args.devicename, args.update_sha)
    else:
        py_test_lib.add_result(RESULT_FILE, "ota-update-to-%s fail" % args.update_sha)
        print "FAIL: %s update to %s failed" % (args.devicename, args.update_sha)
else:
    py_test_lib.add_result(RESULT_FILE, "installed-device-sha-match-server fail")
    print "FAIL: Insalled device sha to %s mismatched on the server" % args.devicename