def test_durability_file(self): """耐久試験:ファイルストレージ アップロード/ダウンロード""" b = baas.FileBucket(self.service, "bucket1") filename = "test_file.txt" text_data = self.create_test_data(1024 * 1024) end_time = time.time() + (48 * 60 * 60) while end_time >= time.time(): # upload meta = b.create(filename, data=text_data.encode(), content_type="plain/text") assert meta["filename"] == filename assert meta["length"] == len(text_data) assert meta["contentType"] == "plain/text" # download res = b.download(filename) assert res.status_code == 200 assert res.text == text_data # remove b.remove(filename) # sleep 1sec time.sleep(1) # update session token if self.service.session_token_expire - (60 * 60) < time.time(): baas.User.login(self.service, username="******", password="******")
def test_upload(self): """正常にuploadできること。日本語ファイル名も使用できること。""" b = baas.FileBucket(self.service, "bucket1") filename = "日本語.txt" # upload test_data = self.create_test_data(1024) meta = b.create(filename, data=test_data.encode(), content_type="plain/text") assert meta["filename"] == filename if type( meta["filename"]) is str else u"日本語.txt" assert meta["length"] == len(test_data) assert meta["contentType"] == "plain/text" # download res = b.download(filename) assert res.status_code == 200 assert res.text == test_data # stream download with b.download(filename, stream=True) as res: assert res.status_code == 200 data = res.raw.read() assert data.decode() == test_data
def upload_file_one(self): # type: () -> (baas.FileBucket, str, dict) b = baas.FileBucket(self.service, "bucket1") test_data = self.create_test_data(64) meta = b.create("file1.txt", data=test_data.encode(), content_type="plain/text") return b, test_data, meta
def test_download(self): """正常にダウンロードできること""" resp = MagicMock() service = mock_service_resp(resp) bucket = baas.FileBucket(service, "bucket1") result = bucket.download("file1") assert result == resp assert get_rest_args(service) == ("GET", "/files/bucket1/file1") assert get_rest_kwargs(service)["stream"] is False
def test_upload_time(self): """新規ファイルアップロード時間 (1Mbyte)""" b = baas.FileBucket(self.service, "bucket1") text_data = self.create_test_data(1024 * 1024) start_time = time.time() meta = b.create("test_file.txt", data=text_data.encode(), content_type="plain/text") elapsed_time = time.time() - start_time assert meta["length"] == len(text_data) assert elapsed_time < 0.9 print("query time: " + str(elapsed_time))
def test_file_size(self): """ファイルサイズ""" b = baas.FileBucket(self.service, "bucket1") with open(os.path.expanduser("~/.baas/spec_test_100mb.mp4"), "rb") as f: mp4_data = f.read() for i in range(8): filename = "MovieFile_{}.mp4".format(i) b.create(filename, data=mp4_data, content_type="video/mp4") file_list = b.query() assert len(file_list) == 8
def test_download_time(self): """新規ファイルダウンロード時間 (1Mbyte)""" b = baas.FileBucket(self.service, "bucket1") text_data = self.create_test_data(1024 * 1024) b.create("test_file.txt", data=text_data.encode(), content_type="plain/text") start_time = time.time() res = b.download("test_file.txt") elapsed_time = time.time() - start_time assert res.status_code == 200 assert res.text == text_data assert elapsed_time < 1.1 print("query time: " + str(elapsed_time))
def test_file_count(self): """ファイル数/メタファイル数""" b = baas.FileBucket(self.service, "bucket1") text_data = self.create_test_data(1024 * 1024) with open(os.path.expanduser("~/.baas/spec_test_1mb.jpg"), "rb") as f: img_data = f.read() for i in range(500): filename = "TextFile_{}.txt".format(i) b.create(filename, data=text_data.encode(), content_type="plain/text") filename = "ImageFile_{}.jpg".format(i) b.create(filename, data=img_data, content_type="image/jpeg") file_list = b.query() assert len(file_list) == 1000
def test_query(self): """正常にクエリできること""" b = baas.FileBucket(self.service, "bucket1") # 初期状態では 0 件 files = b.query() assert len(files) == 0 # ファイル登録 test_data = self.create_test_data(128) for i in range(5): b.create("file{}.txt".format(i), data=test_data.encode(), content_type="plain/text") files = b.query() assert len(files) == 5 for file in files: assert re.match(r"^file\d.txt$", file["filename"]) assert file["length"] == len(test_data) assert file["contentType"] == "plain/text"
def test_bucket_count(self): """バケット数""" self.remove_all_buckets() for i in range(1000): self.buckets.upsert("bucket" + str(i), content_acl={ "r": ["g:authenticated"], "w": ["g:authenticated"] }) text_data = self.create_test_data(1024 * 1024) for i in range(1000): b = baas.FileBucket(self.service, "bucket" + str(i)) b.create("TextFile.txt", data=text_data.encode(), content_type="plain/text") results = self.buckets.query() assert len(results) == 1000
print("insert:", obj) obj["score"] = 95 res = objectBucket.update(obj["_id"], obj, obj["etag"]) print("update:", res) res = objectBucket.query(where={}) print("query:", res) res = objectBucket.remove_with_query({}) print("delete:", res) print() # file upload/download test fileBucket = baas.FileBucket(service, "test1") acl = {"r": ["g:anonymous"], "w": ["g:anonymous"]} res = fileBucket.create("test.txt", "TESTDATA".encode("utf-8"), "plain/text", acl=acl) #res = bucket2.update("test.txt", "TESTDATA".encode("utf-8"), "plain/text") print(res) res = fileBucket.query() print(res) res = fileBucket.download("test.txt") print(res.text)
def get_bucket(self, expected_result): service = mock_service_json_resp(expected_result) bucket = baas.FileBucket(service, "bucket1") return service, bucket