Repository: incubator-predictionio-sdk-python Updated Branches: refs/heads/master 41d0c11c0 -> 903b2f6e7
http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-python/blob/bc678328/tests-obsolete/predictionio_test.py ---------------------------------------------------------------------- diff --git a/tests-obsolete/predictionio_test.py b/tests-obsolete/predictionio_test.py new file mode 100644 index 0000000..696718c --- /dev/null +++ b/tests-obsolete/predictionio_test.py @@ -0,0 +1,257 @@ +""" +Test Python SDK +""" +import unittest + +import predictionio +import time + + +APP_KEY = "gDx1XuMUC9vu1YWWPRZkLRTftoq7m73mlj2MtnZEjncPlZ1JxUS2s7oajwP9xrZQ" # replace this with your AppKey +API_URL = "http://localhost:8000" # PredictoinIO Server + +MIN_VERSION = '0.6.0' +if predictionio.__version__ < MIN_VERSION: + err = "Require PredictionIO Python SDK version >= %s" % MIN_VERSION + raise Exception(err) + +# print predictionio.__version__ +# predictionio.connection.enable_log() + + +class TestPredictionIO(unittest.TestCase): + def setUp(self): + pass + + def tearDown(self): + pass + + def test_status(self): + client = predictionio.Client(APP_KEY, 1, API_URL) + status = client.get_status() + self.assertEqual(status, "PredictionIO Output API is online.") + client.close() + + def _test_user(self, uids): + client = predictionio.Client(APP_KEY, 1, API_URL) + + uid1 = uids[0] + uid2 = uids[1] + uid3 = uids[2] + uid4 = uids[3] + uid5 = uids[4] + + # create users and get them back + client.create_user(uid1) + # create user with optional attributes + client.create_user(uid2, {"pio_latlng": [1.2, 33.3]}) + client.create_user(uid3, {"pio_latlng": [4.5, 67.8], "pio_inactive": True}) + # create user with custom attributes + client.create_user(uid4, {"pio_latlng": [1.2, 33.3], "custom1": "value1", "custom2": "value2"}) + client.create_user(uid5, {"custom1": "u5c1", "custom2": "u5c2"}) + + user1 = client.get_user(uid1) + user2 = client.get_user(uid2) + user3 = client.get_user(uid3) + user4 = client.get_user(uid4) + user5 = client.get_user(uid5) + + self.assertEqual(user1, {"pio_uid": uid1}) + self.assertEqual(user2, {"pio_uid": uid2, "pio_latlng": [1.2, 33.3]}) + self.assertEqual(user3, {"pio_uid": uid3, "pio_latlng": [4.5, 67.8], "pio_inactive": True}) + self.assertEqual(user4, {"pio_uid": uid4, "pio_latlng": [1.2, 33.3], "custom1": "value1", "custom2": "value2"}) + self.assertEqual(user5, {"pio_uid": uid5, "custom1": "u5c1", "custom2": "u5c2"}) + + # delete user and then try to get it + client.delete_user(uid1) + + try: + client.get_user(uid1) + except predictionio.UserNotFoundError as e: # noqa + pass # expected exception + except: + raise + + # other users still exist + user2 = client.get_user(uid2) + self.assertEqual(user2, {"pio_uid": uid2, "pio_latlng": [1.2, 33.3]}) + + # read, modify, write + user3 = client.get_user(uid3) + self.assertEqual(user3, {"pio_uid": uid3, "pio_latlng": [4.5, 67.8], "pio_inactive": True}) + del user3["pio_uid"] + user3["pio_latlng"] = [5.6, 10.11] + user3["pio_inactive"] = False + user3["custom1"] = "food" + client.create_user(uid3, user3) + updated_user3 = client.get_user(uid3) + self.assertEqual(updated_user3, + {"pio_uid": uid3, "pio_latlng": [5.6, 10.11], "pio_inactive": False, "custom1": "food"}) + + user4 = client.get_user(uid4) + self.assertEqual(user4, {"pio_uid": uid4, "pio_latlng": [1.2, 33.3], "custom1": "value1", "custom2": "value2"}) + del user4["pio_uid"] + user4["custom1"] = "new value" + client.create_user(uid4, user4) + updated_user4 = client.get_user(uid4) + self.assertEqual(updated_user4, + {"pio_uid": uid4, "pio_latlng": [1.2, 33.3], "custom1": "new value", "custom2": "value2"}) + + client.close() + + def test_user(self): + self._test_user(["u1", "u2", "u3", "u4", "u5"]) + # test special characters in uid + self._test_user(["[email protected]", "u2@ap/ple", "[email protected]", "u4/a/b", "&^%$()u5"]) + + def _test_item(self, iids): + client = predictionio.Client(APP_KEY, 1, API_URL) + + iid1 = iids[0] + iid2 = iids[1] + iid3 = iids[2] + iid4 = iids[3] + iid5 = iids[4] + + # create items and read back + client.create_item(iid1, ("t1", "t2", "t3")) + client.create_item(iid2, ("t1",)) + client.create_item(iid3, ("t2",), + {"pio_price": 4.99, "pio_profit": 2.0, "pio_startT": 12345667, "pio_endT": 4567788, + "pio_latlng": [1.345, 9.876], "pio_inactive": True}) + client.create_item(iid4, ("t2",), {"pio_latlng": [1.2345, 10.11], "custom1": "value1"}) + client.create_item(iid5, ("t1", "t2"), {"custom1": "i5value1", "custom2": "i5value2"}) + + item1 = client.get_item(iid1) + item2 = client.get_item(iid2) + item3 = client.get_item(iid3) + item4 = client.get_item(iid4) + item5 = client.get_item(iid5) + + del item1["pio_startT"] # pio_startT is automatically inserted, don't compare + self.assertEqual(item1, {"pio_iid": iid1, "pio_itypes": ("t1", "t2", "t3")}) + del item2["pio_startT"] + self.assertEqual(item2, {"pio_iid": iid2, "pio_itypes": ("t1",)}) + self.assertEqual(item3, {"pio_iid": iid3, "pio_itypes": ("t2",), "pio_price": 4.99, "pio_profit": 2.0, + "pio_startT": 12345667, "pio_endT": 4567788, "pio_latlng": [1.345, 9.876], + "pio_inactive": True}) + del item4["pio_startT"] + self.assertEqual(item4, + {"pio_iid": iid4, "pio_itypes": ("t2",), "pio_latlng": [1.2345, 10.11], "custom1": "value1"}) + del item5["pio_startT"] + self.assertEqual(item5, + {"pio_iid": iid5, "pio_itypes": ("t1", "t2"), "custom1": "i5value1", "custom2": "i5value2"}) + + # delete and then try to get it + client.delete_item(iid2) + + try: + item2 = client.get_item(iid2) + except predictionio.ItemNotFoundError as e: # noqa + pass # expected exception + except: + raise + + # others still exist + item3 = client.get_item(iid3) + self.assertEqual(item3, {"pio_iid": iid3, "pio_itypes": ("t2",), "pio_price": 4.99, "pio_profit": 2.0, + "pio_startT": 12345667, "pio_endT": 4567788, "pio_latlng": [1.345, 9.876], + "pio_inactive": True}) + + # read, modify, write + del item3["pio_iid"] + item3_itypes = item3.pop("pio_itypes") + item3["pio_price"] = 6.99 + item3["custom1"] = "some value" + client.create_item(iid3, item3_itypes, item3) + updated_item3 = client.get_item(iid3) + self.assertEqual(updated_item3, {"pio_iid": iid3, "pio_itypes": ("t2",), "pio_price": 6.99, "pio_profit": 2.0, + "pio_startT": 12345667, "pio_endT": 4567788, "pio_latlng": [1.345, 9.876], + "pio_inactive": True, "custom1": "some value"}) + + client.close() + + def test_item(self): + self._test_item(["i1", "i2", "i3", "i4", "i5"]) + # test special characters in iid + self._test_item(["[email protected]", "i2/f/bar//@@foo", "$$i3%%$~~", "http://www.i4.com", "``i5/apple/"]) + + def test_u2iAction_deprecated(self): + client = predictionio.Client(APP_KEY, 1, API_URL) + + client.user_like_item("u1", "i1") + client.user_dislike_item("u2", "i2") + client.user_view_item("u3", "i3") + client.user_rate_item("u4", "i4", 4) + client.user_conversion_item("u5", "i5") + + client.close() + + def test_u2iAction(self): + client = predictionio.Client(APP_KEY, 1, API_URL) + + client.identify("u101") + + # required param + client.record_action_on_item("like", "i1") + client.record_action_on_item("dislike", "i2") + client.record_action_on_item("view", "i3") + client.record_action_on_item("rate", "i4", {"pio_rate": 1}) + client.record_action_on_item("conversion", "i5") + + client.identify("u102") + + # with optional param + client.record_action_on_item("like", "i1", {"pio_latlng": [1.23, 4.56]}) + client.record_action_on_item("dislike", "i2", {"pio_t": 1234567689}) + client.record_action_on_item("view", "i3", {"pio_latlng": [4.67, 1.44], "pio_t": 3445566778}) + client.record_action_on_item("rate", "i4", {"pio_rate": 1, "pio_latlng": [66.78, 9.10]}) + client.record_action_on_item("conversion", "i5", {"pio_price": 12.5}) + + # uid and iid with special characters + client.identify("[email protected]") + client.record_action_on_item("view", "[email protected]") + client.record_action_on_item("view", "http://www.yahoo.com") + + client.close() + + def test_pending_requests(self): + client = predictionio.Client(APP_KEY, 1, API_URL) + + client.identify("u111") + for i in range(100): + client.arecord_action_on_item("like", str(i)) + + n = 1 + while n > 0: + n = client.pending_requests() + time.sleep(0.1) + # print n + + client.close() + + def test_qsize(self): + client = predictionio.Client(APP_KEY, 1, API_URL, qsize=10) + + client.identify("u222") + for i in range(100): + client.arecord_action_on_item("like", str(i)) + + n = 1 + while n > 0: + n = client.pending_requests() + time.sleep(0.1) + # print n + + client.close() + + +""" +to run individual test: +$ python -m unittest predictionio_test.TestPredictionIO.test_user + +to run ALL tests: +% python predictionio_test.py +""" +if __name__ == "__main__": + unittest.main() http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-python/blob/bc678328/tests/.keep ---------------------------------------------------------------------- diff --git a/tests/.keep b/tests/.keep new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-python/blob/bc678328/tests/conversion_test.py ---------------------------------------------------------------------- diff --git a/tests/conversion_test.py b/tests/conversion_test.py deleted file mode 100644 index ffcd90f..0000000 --- a/tests/conversion_test.py +++ /dev/null @@ -1,23 +0,0 @@ -import timeit -import json - -if __name__ == "__main__": - a = True - - t = timeit.Timer("json.dumps(True)", "import json") - - t_bool2json = t.timeit(1000)/1000 - print "bool 2 json" - print t_bool2json - - t = timeit.Timer("str(True).lower()", "") - - t_bool2string = t.timeit(1000)/1000 - print "bool 2 string" - print t_bool2string - - - - - - http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-python/blob/bc678328/tests/import_testdata.py ---------------------------------------------------------------------- diff --git a/tests/import_testdata.py b/tests/import_testdata.py deleted file mode 100644 index 57ec48c..0000000 --- a/tests/import_testdata.py +++ /dev/null @@ -1,52 +0,0 @@ -""" -Import simple test data for testing getting itemrec -""" -import predictionio - -APP_KEY = "tGgZ7bJDpSyxLndJUBWgyAUwfBgVSTjO6KkhjnMpzCi7vSgPoYnXYptyVlg3vjLH" -API_URL = "http://localhost:8000" - -MIN_VERSION = '0.5.0' -if predictionio.__version__ < MIN_VERSION: - err = "Require PredictionIO Python SDK version >= %s" % MIN_VERSION - raise Exception(err) - -if __name__ == "__main__": - client = predictionio.Client(APP_KEY, 1, API_URL) - - client.create_user("u0") - client.create_user("u1") - client.create_user("u2") - client.create_user("u3") - - client.create_item("i0", ("t1",), {"custom1": "i0c1"}) - client.create_item("i1", ("t1","t2"), {"custom1": "i1c1", "custom2": "i1c2"}) - client.create_item("i2", ("t1","t2"), {"custom2": "i2c2"}) - client.create_item("i3", ("t1",)) - - client.identify("u0") - client.record_action_on_item("rate", "i0", { "pio_rate": 2 }) - client.record_action_on_item("rate", "i1", { "pio_rate": 3 }) - client.record_action_on_item("rate", "i2", { "pio_rate": 4 }) - - client.identify("u1") - client.record_action_on_item("rate", "i2", { "pio_rate": 4 }) - client.record_action_on_item("rate", "i3", { "pio_rate": 1 }) - - client.identify("u2") - client.record_action_on_item("rate", "i1", { "pio_rate": 2 }) - client.record_action_on_item("rate", "i2", { "pio_rate": 1 }) - client.record_action_on_item("rate", "i3", { "pio_rate": 3 }) - - client.identify("u3") - client.record_action_on_item("rate", "i0", { "pio_rate": 5 }) - client.record_action_on_item("rate", "i1", { "pio_rate": 3 }) - client.record_action_on_item("rate", "i3", { "pio_rate": 2 }) - - client.close() - - - - - - http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-python/blob/bc678328/tests/import_testdata_id_mismatch.py ---------------------------------------------------------------------- diff --git a/tests/import_testdata_id_mismatch.py b/tests/import_testdata_id_mismatch.py deleted file mode 100644 index 17d707a..0000000 --- a/tests/import_testdata_id_mismatch.py +++ /dev/null @@ -1,52 +0,0 @@ -""" -Import simple test data for testing getting itemrec -""" -import predictionio - -APP_KEY = "7zwXYnroz52gemLdHEU20Nn8c2SyobFpnrzoTGOolCe8ZRH2zmGyhVknj9Sa7P6x" -API_URL = "http://localhost:8000" - -MIN_VERSION = '0.5.0' -if predictionio.__version__ < MIN_VERSION: - err = "Require PredictionIO Python SDK version >= %s" % MIN_VERSION - raise Exception(err) - -if __name__ == "__main__": - client = predictionio.Client(APP_KEY, 1, API_URL) - - client.create_user("u0") - client.create_user("u1") - client.create_user("u2") - client.create_user("u3") - - client.create_item("i0", ("t1",), {"custom1": "i0c1"}) - client.create_item("i1", ("t1","t2"), {"custom1": "i1c1", "custom2": "i1c2"}) - client.create_item("i2", ("t1","t2"), {"custom2": "i2c2"}) - client.create_item("i3", ("t1",)) - - client.identify("u0x") - client.record_action_on_item("rate", "i0", { "pio_rate": 2 }) - client.record_action_on_item("rate", "i1", { "pio_rate": 3 }) - client.record_action_on_item("rate", "i2", { "pio_rate": 4 }) - - client.identify("u1x") - client.record_action_on_item("rate", "i2", { "pio_rate": 4 }) - client.record_action_on_item("rate", "i3", { "pio_rate": 1 }) - - client.identify("u2x") - client.record_action_on_item("rate", "i1", { "pio_rate": 2 }) - client.record_action_on_item("rate", "i2", { "pio_rate": 1 }) - client.record_action_on_item("rate", "i3", { "pio_rate": 3 }) - - client.identify("u3x") - client.record_action_on_item("rate", "i0", { "pio_rate": 5 }) - client.record_action_on_item("rate", "i1", { "pio_rate": 3 }) - client.record_action_on_item("rate", "i3", { "pio_rate": 2 }) - - client.close() - - - - - - http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-python/blob/bc678328/tests/import_testdata_special_char.py ---------------------------------------------------------------------- diff --git a/tests/import_testdata_special_char.py b/tests/import_testdata_special_char.py deleted file mode 100644 index e9445be..0000000 --- a/tests/import_testdata_special_char.py +++ /dev/null @@ -1,52 +0,0 @@ -""" -Import simple test data (id with special characters) for testing getting itemrec -""" -import predictionio - -APP_KEY = "GToKwk78As0LBp2fAx2YNUBPZFZvtwy6MJkGwRASiD6Q77JjBnTaXBxzBTd52ICE" -API_URL = "http://localhost:8000" - -MIN_VERSION = '0.5.0' -if predictionio.__version__ < MIN_VERSION: - err = "Require PredictionIO Python SDK version >= %s" % MIN_VERSION - raise Exception(err) - -if __name__ == "__main__": - client = predictionio.Client(APP_KEY, 1, API_URL) - - client.create_user("[email protected]") - client.create_user("[email protected]") - client.create_user("http://u2.com") - client.create_user("[email protected]") - - client.create_item("http://i0.com", ("t1",), {"custom1": "i0c1"}) - client.create_item("i1@i1", ("t1","t2"), {"custom1": "i1c1", "custom2": "i1c2"}) - client.create_item("i2.org", ("t1","t2"), {"custom2": "i2c2"}) - client.create_item("i3", ("t1",)) - - client.identify("[email protected]") - client.record_action_on_item("rate", "http://i0.com", { "pio_rate": 2 }) - client.record_action_on_item("rate", "i1@i1", { "pio_rate": 3 }) - client.record_action_on_item("rate", "i2.org", { "pio_rate": 4 }) - - client.identify("[email protected]") - client.record_action_on_item("rate", "i2.org", { "pio_rate": 4 }) - client.record_action_on_item("rate", "i3", { "pio_rate": 1 }) - - client.identify("http://u2.com") - client.record_action_on_item("rate", "i1@i1", { "pio_rate": 2 }) - client.record_action_on_item("rate", "i2.org", { "pio_rate": 1 }) - client.record_action_on_item("rate", "i3", { "pio_rate": 3 }) - - client.identify("[email protected]") - client.record_action_on_item("rate", "http://i0.com", { "pio_rate": 5 }) - client.record_action_on_item("rate", "i1@i1", { "pio_rate": 3 }) - client.record_action_on_item("rate", "i3", { "pio_rate": 2 }) - - client.close() - - - - - - http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-python/blob/bc678328/tests/predictionio_itemrec_test.py ---------------------------------------------------------------------- diff --git a/tests/predictionio_itemrec_test.py b/tests/predictionio_itemrec_test.py deleted file mode 100644 index 5f91501..0000000 --- a/tests/predictionio_itemrec_test.py +++ /dev/null @@ -1,300 +0,0 @@ -""" -Test getting itemrec after algo training completes. -""" -import predictionio -import unittest -import time - -APP_KEY = "y2Fk4BACEGYeJnqBF4zL9TmrIBdF9va3gyFaLsnM7PVyUNf0G00zC8vCnyBx5hdA" # replace this with your AppKey -API_URL = "http://localhost:8000" # PredictoinIO Server - -DEBUG = True - -MIN_VERSION = '0.6.0' -if predictionio.__version__ < MIN_VERSION: - err = "Require PredictionIO Python SDK version >= %s" % MIN_VERSION - raise Exception(err) - -class TestPredictionIO(unittest.TestCase): - def setUp(self): - pass - - def tearDown(self): - pass - - def test_get_itemrec_exception_deprecated(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - - try: - itemrec = client.get_itemrec("uidwithoutrec", 10, "python-itemrec-engine") - except predictionio.ItemRecNotFoundError as e: - pass # expected exception - except: - raise - - client.close() - - def test_get_itemrec_exception(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - - client.identify("uidwithoutrec") - - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 10) - except predictionio.ItemRecNotFoundError as e: - pass # expected exception - except: - raise - - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 10, { "pio_itypes": ("t1",), "pio_latlng": [1.34, 5.67], "pio_within": 5.0, "pio_unit": "km", "pio_attributes": ["custom1", "custom2"] }) - except predictionio.ItemRecNotFoundError as e: - pass # expected exception - except: - raise - - client.close() - - def test_get_itemrec_deprecated(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - - # request more - try: - itemrec = client.get_itemrec("u0", 10, "python-itemrec-engine") - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2", "i3", "i1", "i0"]}) - - try: - itemrec = client.get_itemrec("u1", 10, "python-itemrec-engine") - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": ["i2", "i1", "i0", "i3"]}) or - (itemrec == {"pio_iids": ["i2", "i0", "i1", "i3"]}) ) - - try: - itemrec = client.get_itemrec("u2", 10, "python-itemrec-engine") - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": ["i3", "i0", "i1", "i2"]}) or - (itemrec == {"pio_iids": ["i3", "i1", "i0", "i2"]}) ) - - try: - itemrec = client.get_itemrec("u3", 6, "python-itemrec-engine") - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": ["i0", "i1", "i2", "i3"]}) or - (itemrec == {"pio_iids": ["i0", "i2", "i1", "i3"]}) ) - - # request less - try: - itemrec = client.get_itemrec("u0", 1, "python-itemrec-engine") - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2"]}) - - try: - itemrec = client.get_itemrec("u0", 2, "python-itemrec-engine") - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2", "i3"]}) - - # request with optional attributes - - # pio_itypes - try: - itemrec = client.get_itemrec("u0", 10, "python-itemrec-engine", pio_itypes=("t1","t2")) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2", "i3", "i1", "i0"]}) - - # subset itypes - try: - itemrec = client.get_itemrec("u0", 10, "python-itemrec-engine", pio_itypes=("t2",)) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2", "i1"]}) - - # nonexisting itypes - try: - itemrec = client.get_itemrec("u0", 10, "python-itemrec-engine", pio_itypes=("other-itype",)) - except predictionio.ItemRecNotFoundError as e: - pass # expected no recommendation - except: - raise - - # pio_attributes - try: - itemrec = client.get_itemrec("u0", 10, "python-itemrec-engine", pio_itypes=("t1",), pio_attributes=["custom1", "custom2"]) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2", "i3", "i1", "i0"], "custom1": [None, None, "i1c1", "i0c1"], "custom2": ["i2c2", None, "i1c2", None]}) - - client.close() - - - def test_get_itemrec(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - - # request more - client.identify("u0") - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 10) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2", "i3", "i1", "i0"]}) - - client.identify("u1") - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 10) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": ["i2", "i1", "i0", "i3"]}) or - (itemrec == {"pio_iids": ["i2", "i0", "i1", "i3"]}) ) - - client.identify("u2") - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 10) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": ["i3", "i0", "i1", "i2"]}) or - (itemrec == {"pio_iids": ["i3", "i1", "i0", "i2"]}) ) - - client.identify("u3") - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 6) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": ["i0", "i1", "i2", "i3"]}) or - (itemrec == {"pio_iids": ["i0", "i2", "i1", "i3"]}) ) - - # request less - client.identify("u0") - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 1) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2"]}) - - client.identify("u0") - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 2) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2", "i3"]}) - - # request with optional attributes - - # pio_itypes - client.identify("u0") - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 10, {"pio_itypes": ("t1","t2")}) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2", "i3", "i1", "i0"]}) - - # subset itypes - client.identify("u0") - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 10, {"pio_itypes": ("t2",)}) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2", "i1"]}) - - # nonexisting itypes - client.identify("u0") - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 10, {"pio_itypes": ("other-itype",)}) - except predictionio.ItemRecNotFoundError as e: - pass # expected no recommendation - except: - raise - - # pio_attributes - client.identify("u0") - try: - itemrec = client.get_itemrec_topn("python-itemrec-engine", 10, {"pio_itypes": ("t1",), "pio_attributes": ["custom1", "custom2"]}) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": ["i2", "i3", "i1", "i0"], "custom1": [None, None, "i1c1", "i0c1"], "custom2": ["i2c2", None, "i1c2", None]}) - - # TODO pio_latlng - # TODO pio_within - # TODO pio_unit - - client.close() - -if __name__ == "__main__" : - unittest.main() http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-python/blob/bc678328/tests/predictionio_itemrec_test_special_char.py ---------------------------------------------------------------------- diff --git a/tests/predictionio_itemrec_test_special_char.py b/tests/predictionio_itemrec_test_special_char.py deleted file mode 100644 index e4ac6c8..0000000 --- a/tests/predictionio_itemrec_test_special_char.py +++ /dev/null @@ -1,291 +0,0 @@ -""" -Test getting itemrec after algo training completes. -""" -import predictionio -import unittest -import time - -APP_KEY = "GToKwk78As0LBp2fAx2YNUBPZFZvtwy6MJkGwRASiD6Q77JjBnTaXBxzBTd52ICE" # replace this with your AppKey -API_URL = "http://localhost:8000" # PredictoinIO Server - -DEBUG = True - -MIN_VERSION = '0.6.0' -if predictionio.__version__ < MIN_VERSION: - err = "Require PredictionIO Python SDK version >= %s" % MIN_VERSION - raise Exception(err) - -class TestPredictionIO(unittest.TestCase): - def setUp(self): - pass - - def tearDown(self): - pass - - def test_get_itemrec_deprecated(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - - uid0 = "[email protected]" - uid1 = "[email protected]" - uid2 = "http://u2.com" - uid3 = "[email protected]" - - iid0 = "http://i0.com" - iid1 = "i1@i1" - iid2 = "i2.org" - iid3 = "i3" - - engine_name = "itemrec" - - # request more - try: - itemrec = client.get_itemrec(uid0, 10, engine_name) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2, iid3, iid1, iid0]}) - - try: - itemrec = client.get_itemrec(uid1, 10, engine_name) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": [iid2, iid1, iid0, iid3]}) or - (itemrec == {"pio_iids": [iid2, iid0, iid1, iid3]}) ) - - try: - itemrec = client.get_itemrec(uid2, 10, engine_name) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": [iid3, iid0, iid1, iid2]}) or - (itemrec == {"pio_iids": [iid3, iid1, iid0, iid2]}) ) - - try: - itemrec = client.get_itemrec(uid3, 6, engine_name) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": [iid0, iid1, iid2, iid3]}) or - (itemrec == {"pio_iids": [iid0, iid2, iid1, iid3]}) ) - - # request less - try: - itemrec = client.get_itemrec(uid0, 1, engine_name) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2]}) - - try: - itemrec = client.get_itemrec(uid0, 2, engine_name) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2, iid3]}) - - # request with optional attributes - - # pio_itypes - try: - itemrec = client.get_itemrec(uid0, 10, engine_name, pio_itypes=("t1","t2")) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2, iid3, iid1, iid0]}) - - # subset itypes - try: - itemrec = client.get_itemrec(uid0, 10, engine_name, pio_itypes=("t2",)) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2, iid1]}) - - # nonexisting itypes - try: - itemrec = client.get_itemrec(uid0, 10, engine_name, pio_itypes=("other-itype",)) - except predictionio.ItemRecNotFoundError as e: - pass # expected no recommendation - except: - raise - - # pio_attributes - try: - itemrec = client.get_itemrec(uid0, 10, engine_name, pio_itypes=("t1",), pio_attributes=["custom1", "custom2"]) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2, iid3, iid1, iid0], "custom1": [None, None, "i1c1", "i0c1"], "custom2": ["i2c2", None, "i1c2", None]}) - - client.close() - - - def test_get_itemrec(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - - uid0 = "[email protected]" - uid1 = "[email protected]" - uid2 = "http://u2.com" - uid3 = "[email protected]" - - iid0 = "http://i0.com" - iid1 = "i1@i1" - iid2 = "i2.org" - iid3 = "i3" - - engine_name = "itemrec" - - # request more - client.identify(uid0) - try: - itemrec = client.get_itemrec_topn(engine_name, 10) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2, iid3, iid1, iid0]}) - - client.identify(uid1) - try: - itemrec = client.get_itemrec_topn(engine_name, 10) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": [iid2, iid1, iid0, iid3]}) or - (itemrec == {"pio_iids": [iid2, iid0, iid1, iid3]}) ) - - client.identify(uid2) - try: - itemrec = client.get_itemrec_topn(engine_name, 10) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": [iid3, iid0, iid1, iid2]}) or - (itemrec == {"pio_iids": [iid3, iid1, iid0, iid2]}) ) - - client.identify(uid3) - try: - itemrec = client.get_itemrec_topn(engine_name, 6) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertTrue( (itemrec == {"pio_iids": [iid0, iid1, iid2, iid3]}) or - (itemrec == {"pio_iids": [iid0, iid2, iid1, iid3]}) ) - - # request less - client.identify(uid0) - try: - itemrec = client.get_itemrec_topn(engine_name, 1) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2]}) - - client.identify(uid0) - try: - itemrec = client.get_itemrec_topn(engine_name, 2) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2, iid3]}) - - # request with optional attributes - - # pio_itypes - client.identify(uid0) - try: - itemrec = client.get_itemrec_topn(engine_name, 10, {"pio_itypes": ("t1","t2")}) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2, iid3, iid1, iid0]}) - - # subset itypes - client.identify(uid0) - try: - itemrec = client.get_itemrec_topn(engine_name, 10, {"pio_itypes": ("t2",)}) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2, iid1]}) - - # nonexisting itypes - client.identify(uid0) - try: - itemrec = client.get_itemrec_topn(engine_name, 10, {"pio_itypes": ("other-itype",)}) - except predictionio.ItemRecNotFoundError as e: - pass # expected no recommendation - except: - raise - - # pio_attributes - client.identify(uid0) - try: - itemrec = client.get_itemrec_topn(engine_name, 10, {"pio_itypes": ("t1",), "pio_attributes": ["custom1", "custom2"]}) - except predictionio.ItemRecNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemrec - self.assertEqual(itemrec, {"pio_iids": [iid2, iid3, iid1, iid0], "custom1": [None, None, "i1c1", "i0c1"], "custom2": ["i2c2", None, "i1c2", None]}) - - # TODO pio_latlng - # TODO pio_within - # TODO pio_unit - - client.close() - -if __name__ == "__main__" : - unittest.main() http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-python/blob/bc678328/tests/predictionio_itemsim_test.py ---------------------------------------------------------------------- diff --git a/tests/predictionio_itemsim_test.py b/tests/predictionio_itemsim_test.py deleted file mode 100644 index c540f02..0000000 --- a/tests/predictionio_itemsim_test.py +++ /dev/null @@ -1,160 +0,0 @@ -""" -Test getting itemsim after algo training completes (pdio-itemsimcf with cosine sim). -""" -import predictionio -import unittest -import time - -APP_KEY = "y2Fk4BACEGYeJnqBF4zL9TmrIBdF9va3gyFaLsnM7PVyUNf0G00zC8vCnyBx5hdA" # replace this with your AppKey -API_URL = "http://localhost:8000" # PredictoinIO Server - -DEBUG = True - -MIN_VERSION = '0.6.0' -if predictionio.__version__ < MIN_VERSION: - err = "Require PredictionIO Python SDK version >= %s" % MIN_VERSION - raise Exception(err) - -class TestPredictionIO(unittest.TestCase): - def setUp(self): - pass - - def tearDown(self): - pass - - def test_get_itemsim_exception(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "iidwithoutsim", 10) - except predictionio.ItemSimNotFoundError as e: - pass # expected exception - except: - raise - - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "iidwithoutsim", 10, { "pio_itypes": ("t1",), "pio_latlng": [1.34, 5.67], "pio_within": 5.0, "pio_unit": "km", "pio_attributes": ["custom1", "custom2"] }) - except predictionio.ItemSimNotFoundError as e: - pass # expected exception - except: - raise - - client.close() - - def test_get_itemsim(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - - # request more than what is available - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "i0", 10) - except predictionio.ItemSimNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemsim - self.assertTrue( (itemsim == {"pio_iids": ["i1", "i2", "i3"]}) or - (itemsim == {"pio_iids": ["i1", "i3", "i2"]}) ) - - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "i1", 10) - except predictionio.ItemSimNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemsim - self.assertTrue( (itemsim == {"pio_iids": ["i2", "i3", "i0"]}) ) - - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "i2", 10) - except predictionio.ItemSimNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemsim - self.assertTrue( (itemsim == {"pio_iids": ["i1", "i3", "i0"]}) ) - - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "i3", 10) - except predictionio.ItemSimNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemsim - self.assertTrue( (itemsim == {"pio_iids": ["i1", "i2", "i0"]}) ) - - # request less - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "i1", 1) - except predictionio.ItemSimNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemsim - self.assertEqual(itemsim, {"pio_iids": ["i2"]}) - - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "i1", 2) - except predictionio.ItemSimNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemsim - self.assertEqual(itemsim, {"pio_iids": ["i2", "i3"]}) - - # request with optional attributes - - # pio_itypes - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "i1", 10, {"pio_itypes": ("t1","t2")}) - except predictionio.ItemSimNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemsim - self.assertEqual(itemsim, {"pio_iids": ["i2", "i3", "i0"]}) - - # subset itypes - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "i1", 10, {"pio_itypes": ("t2",)}) - except predictionio.ItemSimNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemsim - self.assertEqual(itemsim, {"pio_iids": ["i2"]}) - - # nonexisting itypes - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "i0", 10, {"pio_itypes": ("other-itype",)}) - except predictionio.ItemSimNotFoundError as e: - pass # expected no recommendation - except: - raise - - # pio_attributes - try: - itemsim = client.get_itemsim_topn("python-itemsim-engine", "i1", 10, {"pio_itypes": ("t1",), "pio_attributes": ["custom1", "custom2"]}) - except predictionio.ItemSimNotFoundError as e: - print "ERROR: have you run import_testdata.py and then wait for the algorithm training completion?" - raise - except: - raise - if DEBUG: print itemsim - self.assertEqual(itemsim, {"pio_iids": ["i2", "i3", "i0"], "custom1": [None, None, "i0c1"], "custom2": ["i2c2", None, None]}) - - # TODO pio_latlng - # TODO pio_within - # TODO pio_unit - - client.close() - -if __name__ == "__main__" : - unittest.main() http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-python/blob/bc678328/tests/predictionio_test.py ---------------------------------------------------------------------- diff --git a/tests/predictionio_test.py b/tests/predictionio_test.py deleted file mode 100644 index 28b3d06..0000000 --- a/tests/predictionio_test.py +++ /dev/null @@ -1,246 +0,0 @@ -""" -Test Python SDK -""" -import predictionio -import unittest -import time - -APP_KEY = "GToKwk78As0LBp2fAx2YNUBPZFZvtwy6MJkGwRASiD6Q77JjBnTaXBxzBTd52ICE" # replace this with your AppKey -API_URL = "http://localhost:8000" # PredictoinIO Server - -MIN_VERSION = '0.6.0' -if predictionio.__version__ < MIN_VERSION: - err = "Require PredictionIO Python SDK version >= %s" % MIN_VERSION - raise Exception(err) - -#print predictionio.__version__ -#predictionio.connection.enable_log() - -class TestPredictionIO(unittest.TestCase): - - def setUp(self): - pass - - def tearDown(self): - pass - - def test_status(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - status = client.get_status() - self.assertEqual(status, "PredictionIO Output API is online.") - client.close() - - def _test_user(self, uids): - client = predictionio.Client(APP_KEY, 1, API_URL) - - uid1 = uids[0] - uid2 = uids[1] - uid3 = uids[2] - uid4 = uids[3] - uid5 = uids[4] - - # create users and get them back - client.create_user(uid1) - # create user with optional attributes - client.create_user(uid2, { "pio_latlng": [1.2,33.3] }) - client.create_user(uid3, { "pio_latlng": [4.5,67.8], "pio_inactive": True } ) - # create user with custom attributes - client.create_user(uid4, { "pio_latlng": [1.2,33.3], "custom1": "value1", "custom2": "value2" }) - client.create_user(uid5, { "custom1": "u5c1", "custom2": "u5c2" }) - - user1 = client.get_user(uid1) - user2 = client.get_user(uid2) - user3 = client.get_user(uid3) - user4 = client.get_user(uid4) - user5 = client.get_user(uid5) - - self.assertEqual(user1, {"pio_uid" : uid1}) - self.assertEqual(user2, {"pio_uid" : uid2, "pio_latlng": [1.2,33.3]}) - self.assertEqual(user3, {"pio_uid" : uid3, "pio_latlng" : [4.5,67.8], "pio_inactive" : True}) - self.assertEqual(user4, {"pio_uid" : uid4, "pio_latlng": [1.2,33.3], "custom1": "value1", "custom2": "value2" }) - self.assertEqual(user5, {"pio_uid" : uid5, "custom1": "u5c1", "custom2": "u5c2" }) - - # delete user and then try to get it - client.delete_user(uid1) - - try: - user = client.get_user(uid1) - except predictionio.UserNotFoundError as e: - pass # expected exception - except: - raise - - # other users still exist - user2 = client.get_user(uid2) - self.assertEqual(user2, {"pio_uid" : uid2, "pio_latlng": [1.2,33.3]}) - - # read, modify, write - user3 = client.get_user(uid3) - self.assertEqual(user3, {"pio_uid" : uid3, "pio_latlng" : [4.5,67.8], "pio_inactive" : True}) - del user3["pio_uid"] - user3["pio_latlng"] = [5.6,10.11] - user3["pio_inactive"] = False - user3["custom1"] = "food" - client.create_user(uid3, user3) - updated_user3 = client.get_user(uid3) - self.assertEqual(updated_user3, {"pio_uid" : uid3, "pio_latlng" : [5.6,10.11], "pio_inactive" : False, "custom1" : "food"} ) - - user4 = client.get_user(uid4) - self.assertEqual(user4, {"pio_uid" : uid4, "pio_latlng": [1.2,33.3], "custom1": "value1", "custom2": "value2" }) - del user4["pio_uid"] - user4["custom1"] = "new value" - client.create_user(uid4, user4) - updated_user4 = client.get_user(uid4) - self.assertEqual(updated_user4, {"pio_uid" : uid4, "pio_latlng": [1.2,33.3], "custom1": "new value", "custom2": "value2" }) - - client.close() - - def test_user(self): - self._test_user(["u1", "u2", "u3", "u4", "u5"]) - # test special characters in uid - self._test_user(["[email protected]", "u2@ap/ple", "[email protected]", "u4/a/b", "&^%$()u5"]) - - def _test_item(self, iids): - client = predictionio.Client(APP_KEY, 1, API_URL) - - iid1 = iids[0] - iid2 = iids[1] - iid3 = iids[2] - iid4 = iids[3] - iid5 = iids[4] - - # create items and read back - client.create_item(iid1, ("t1","t2","t3")) - client.create_item(iid2, ("t1",)) - client.create_item(iid3, ("t2",), {"pio_price": 4.99, "pio_profit": 2.0, "pio_startT": 12345667, "pio_endT": 4567788, "pio_latlng": [1.345, 9.876], "pio_inactive": True }) - client.create_item(iid4, ("t2",), {"pio_latlng": [1.2345, 10.11], "custom1": "value1"}) - client.create_item(iid5, ("t1", "t2"), {"custom1": "i5value1", "custom2": "i5value2"} ) - - item1 = client.get_item(iid1) - item2 = client.get_item(iid2) - item3 = client.get_item(iid3) - item4 = client.get_item(iid4) - item5 = client.get_item(iid5) - - del item1["pio_startT"] # pio_startT is automatically inserted, don't compare - self.assertEqual(item1, {"pio_iid": iid1, "pio_itypes": ("t1", "t2", "t3") } ) - del item2["pio_startT"] - self.assertEqual(item2, {"pio_iid": iid2, "pio_itypes": ("t1",)} ) - self.assertEqual(item3, {"pio_iid": iid3, "pio_itypes": ("t2",), "pio_price": 4.99, "pio_profit": 2.0, "pio_startT": 12345667, "pio_endT": 4567788, "pio_latlng": [1.345, 9.876], "pio_inactive": True } ) - del item4["pio_startT"] - self.assertEqual(item4, {"pio_iid": iid4, "pio_itypes": ("t2",), "pio_latlng": [1.2345, 10.11], "custom1": "value1"}) - del item5["pio_startT"] - self.assertEqual(item5, {"pio_iid": iid5, "pio_itypes": ("t1","t2"), "custom1": "i5value1", "custom2": "i5value2"}) - - # delete and then try to get it - client.delete_item(iid2) - - try: - item2 = client.get_item(iid2) - except predictionio.ItemNotFoundError as e: - pass # expected exception - except: - raise - - # others still exist - item3 = client.get_item(iid3) - self.assertEqual(item3, {"pio_iid": iid3, "pio_itypes": ("t2",), "pio_price": 4.99, "pio_profit": 2.0, "pio_startT": 12345667, "pio_endT": 4567788, "pio_latlng": [1.345, 9.876], "pio_inactive": True } ) - - # read, modify, write - del item3["pio_iid"] - item3_itypes = item3.pop("pio_itypes") - item3["pio_price"] = 6.99 - item3["custom1"] = "some value" - client.create_item(iid3, item3_itypes, item3) - updated_item3 = client.get_item(iid3) - self.assertEqual(updated_item3, {"pio_iid": iid3, "pio_itypes": ("t2",), "pio_price": 6.99, "pio_profit": 2.0, "pio_startT": 12345667, "pio_endT": 4567788, "pio_latlng": [1.345, 9.876], "pio_inactive": True, "custom1": "some value" } ) - - client.close() - - def test_item(self): - self._test_item(["i1", "i2", "i3", "i4", "i5"]) - # test special characters in iid - self._test_item(["[email protected]", "i2/f/bar//@@foo", "$$i3%%$~~", "http://www.i4.com", "``i5/apple/"]) - - def test_u2iAction_deprecated(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - - client.user_like_item("u1", "i1") - client.user_dislike_item("u2", "i2") - client.user_view_item("u3", "i3") - client.user_rate_item("u4", "i4", 4) - client.user_conversion_item("u5", "i5") - - client.close() - - def test_u2iAction(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - - client.identify("u101") - - # required param - client.record_action_on_item("like", "i1") - client.record_action_on_item("dislike", "i2") - client.record_action_on_item("view", "i3") - client.record_action_on_item("rate", "i4", { "pio_rate": 1 }) - client.record_action_on_item("conversion", "i5") - - client.identify("u102") - - # with optional param - client.record_action_on_item("like", "i1", { "pio_latlng": [1.23, 4.56] }) - client.record_action_on_item("dislike", "i2", { "pio_t": 1234567689 }) - client.record_action_on_item("view", "i3", { "pio_latlng": [4.67, 1.44], "pio_t": 3445566778}) - client.record_action_on_item("rate", "i4", { "pio_rate": 1, "pio_latlng": [66.78, 9.10] }) - client.record_action_on_item("conversion", "i5", { "pio_price" : 12.5 }) - - - # uid and iid with special characters - client.identify("[email protected]") - client.record_action_on_item("view", "[email protected]") - client.record_action_on_item("view", "http://www.yahoo.com") - - client.close() - - - def test_pending_requests(self): - client = predictionio.Client(APP_KEY, 1, API_URL) - - client.identify("u111") - for i in range(100): - client.arecord_action_on_item("like", str(i)) - - n = 1 - while n > 0: - n = client.pending_requests() - time.sleep(0.1) - #print n - - client.close() - - def test_qsize(self): - client = predictionio.Client(APP_KEY, 1, API_URL, qsize=10) - - client.identify("u222") - for i in range(100): - client.arecord_action_on_item("like", str(i)) - - n = 1 - while n > 0: - n = client.pending_requests() - time.sleep(0.1) - #print n - - client.close() - - - -""" -to run individual test: -$ python -m unittest predictionio_test.TestPredictionIO.test_user - -to run ALL tests: -% python predictionio_test.py -""" -if __name__ == "__main__" : - unittest.main() http://git-wip-us.apache.org/repos/asf/incubator-predictionio-sdk-python/blob/bc678328/tox.ini ---------------------------------------------------------------------- diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..23d96e4 --- /dev/null +++ b/tox.ini @@ -0,0 +1,9 @@ +[tox] +envlist = py27,py34 + +[testenv] +deps = flake8 + pandas + +commands = flake8 --ignore=E501 --filename=*.py --exclude=doc,setup.py,*/tests/* + python -m unittest discover --pattern=*.py tests
