aboutsummaryrefslogtreecommitdiff
path: root/deprecated/cwp/bartlett/test/server_tester.py
diff options
context:
space:
mode:
authorTiancong Wang <tcwang@google.com>2020-02-13 21:08:49 +0000
committerTiancong Wang <tcwang@google.com>2020-02-13 21:08:49 +0000
commitb75f321fc8978b92ce3db6886ccb966768f0c7a8 (patch)
tree35fa0fbaeaaddd9cc2a126a05eee3527b51e83a8 /deprecated/cwp/bartlett/test/server_tester.py
parentcddd960b0ba2eb62c372c0d3176c75f0bd05d5e8 (diff)
parente617e3393dd24003aa976ece5050bb291070041c (diff)
downloadtoolchain-utils-android11-mainline-os-statsd-release.tar.gz
Merging 18 commit(s) from Chromium's toolchain-utils am: 0ae38c8498 am: 2a19d36a82 am: e617e3393dr_aml_301500702android-mainline-12.0.0_r55android-mainline-11.0.0_r9android-mainline-11.0.0_r8android-mainline-11.0.0_r7android-mainline-11.0.0_r6android-mainline-11.0.0_r5android-mainline-11.0.0_r45android-mainline-11.0.0_r44android-mainline-11.0.0_r43android-mainline-11.0.0_r42android-mainline-11.0.0_r41android-mainline-11.0.0_r40android-mainline-11.0.0_r4android-mainline-11.0.0_r39android-mainline-11.0.0_r38android-mainline-11.0.0_r37android-mainline-11.0.0_r36android-mainline-11.0.0_r35android-mainline-11.0.0_r34android-mainline-11.0.0_r33android-mainline-11.0.0_r32android-mainline-11.0.0_r31android-mainline-11.0.0_r30android-mainline-11.0.0_r3android-mainline-11.0.0_r29android-mainline-11.0.0_r28android-mainline-11.0.0_r27android-mainline-11.0.0_r26android-mainline-11.0.0_r25android-mainline-11.0.0_r24android-mainline-11.0.0_r23android-mainline-11.0.0_r22android-mainline-11.0.0_r21android-mainline-11.0.0_r20android-mainline-11.0.0_r2android-mainline-11.0.0_r19android-mainline-11.0.0_r18android-mainline-11.0.0_r17android-mainline-11.0.0_r16android-mainline-11.0.0_r15android-mainline-11.0.0_r14android-mainline-11.0.0_r13android-mainline-11.0.0_r12android-mainline-11.0.0_r10android-mainline-11.0.0_r1android-11.0.0_r48android-11.0.0_r47android-11.0.0_r46android-11.0.0_r45android-11.0.0_r44android-11.0.0_r43android-11.0.0_r42android-11.0.0_r41android-11.0.0_r40android-11.0.0_r39android-11.0.0_r38android-11.0.0_r37android-11.0.0_r36android-11.0.0_r35android-11.0.0_r34android-11.0.0_r33android-11.0.0_r32android-11.0.0_r31android-11.0.0_r30android-11.0.0_r29android-11.0.0_r28android-11.0.0_r27android-11.0.0_r26android-11.0.0_r24android-11.0.0_r23android-11.0.0_r22android-11.0.0_r21android-11.0.0_r20android-11.0.0_r19android-11.0.0_r18android-11.0.0_r16android11-qpr3-s1-releaseandroid11-qpr3-releaseandroid11-qpr2-releaseandroid11-qpr1-s2-releaseandroid11-qpr1-s1-releaseandroid11-qpr1-releaseandroid11-qpr1-d-s1-releaseandroid11-qpr1-d-releaseandroid11-qpr1-c-releaseandroid11-mainline-tethering-releaseandroid11-mainline-sparse-2021-jan-releaseandroid11-mainline-sparse-2020-dec-releaseandroid11-mainline-releaseandroid11-mainline-permission-releaseandroid11-mainline-os-statsd-releaseandroid11-mainline-networkstack-releaseandroid11-mainline-media-swcodec-releaseandroid11-mainline-media-releaseandroid11-mainline-extservices-releaseandroid11-mainline-documentsui-releaseandroid11-mainline-conscrypt-releaseandroid11-mainline-cellbroadcast-releaseandroid11-mainline-captiveportallogin-releaseandroid11-devandroid11-d2-releaseandroid11-d1-b-release
Change-Id: I3f25c7ee034b2e20e37ed941b8eae24eec7043eb
Diffstat (limited to 'deprecated/cwp/bartlett/test/server_tester.py')
-rw-r--r--deprecated/cwp/bartlett/test/server_tester.py101
1 files changed, 101 insertions, 0 deletions
diff --git a/deprecated/cwp/bartlett/test/server_tester.py b/deprecated/cwp/bartlett/test/server_tester.py
new file mode 100644
index 00000000..585da43a
--- /dev/null
+++ b/deprecated/cwp/bartlett/test/server_tester.py
@@ -0,0 +1,101 @@
+# Copyright 2012 Google Inc. All Rights Reserved.
+# Author: mrdmnd@ (Matt Redmond)
+"""A unit test for sending data to Bartlett. Requires poster module."""
+
+import cookielib
+import os
+import signal
+import subprocess
+import tempfile
+import time
+import unittest
+import urllib2
+
+from poster.encode import multipart_encode
+from poster.streaminghttp import register_openers
+
+SERVER_DIR = '../.'
+SERVER_URL = 'http://localhost:8080/'
+GET = '_ah/login?email=googler@google.com&action=Login&continue=%s'
+AUTH_URL = SERVER_URL + GET
+
+
+class ServerTest(unittest.TestCase):
+ """A unit test for the bartlett server. Tests upload, serve, and delete."""
+
+ def setUp(self):
+ """Instantiate the files and server needed to test upload functionality."""
+ self._server_proc = LaunchLocalServer()
+ self._jar = cookielib.LWPCookieJar()
+ self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self._jar))
+
+ # We need these files to not delete when closed, because we have to reopen
+ # them in read mode after we write and close them.
+ self.profile_data = tempfile.NamedTemporaryFile(delete=False)
+
+ size = 16 * 1024
+ self.profile_data.write(os.urandom(size))
+
+ def tearDown(self):
+ self.profile_data.close()
+ os.remove(self.profile_data.name)
+ os.kill(self._server_proc.pid, signal.SIGINT)
+
+ def testIntegration(self): # pylint: disable-msg=C6409
+ key = self._testUpload()
+ self._testListAll()
+ self._testServeKey(key)
+ self._testDelKey(key)
+
+ def _testUpload(self): # pylint: disable-msg=C6409
+ register_openers()
+ data = {'profile_data': self.profile_data,
+ 'board': 'x86-zgb',
+ 'chromeos_version': '2409.0.2012_06_08_1114'}
+ datagen, headers = multipart_encode(data)
+ request = urllib2.Request(SERVER_URL + 'upload', datagen, headers)
+ response = urllib2.urlopen(request).read()
+ self.assertTrue(response)
+ return response
+
+ def _testListAll(self): # pylint: disable-msg=C6409
+ request = urllib2.Request(AUTH_URL % (SERVER_URL + 'serve'))
+ response = self.opener.open(request).read()
+ self.assertTrue(response)
+
+ def _testServeKey(self, key): # pylint: disable-msg=C6409
+ request = urllib2.Request(AUTH_URL % (SERVER_URL + 'serve/' + key))
+ response = self.opener.open(request).read()
+ self.assertTrue(response)
+
+ def _testDelKey(self, key): # pylint: disable-msg=C6409
+ # There is no response to a delete request.
+ # We will check the listAll page to ensure there is no data.
+ request = urllib2.Request(AUTH_URL % (SERVER_URL + 'del/' + key))
+ response = self.opener.open(request).read()
+ request = urllib2.Request(AUTH_URL % (SERVER_URL + 'serve'))
+ response = self.opener.open(request).read()
+ self.assertFalse(response)
+
+
+def LaunchLocalServer():
+ """Launch and store an authentication cookie with a local server."""
+ proc = subprocess.Popen(
+ ['dev_appserver.py', '--clear_datastore', SERVER_DIR],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ # Wait for server to come up
+ while True:
+ time.sleep(1)
+ try:
+ request = urllib2.Request(SERVER_URL + 'serve')
+ response = urllib2.urlopen(request).read()
+ if response:
+ break
+ except urllib2.URLError:
+ continue
+ return proc
+
+
+if __name__ == '__main__':
+ unittest.main()