class test_screenshot_from_codebuild(TestCase): def setUp(self): self.code_build = CodeBuild_Jupyter() self.jp = Jupyter() self.png_data = None def tearDown(self): if self.png_data: png_file = '/tmp/lambda_png_file.png' with open(png_file, "wb") as fh: fh.write(base64.decodebytes(self.png_data.encode())) Dev.pprint("Png data with size {0} saved to {1}".format( len(self.png_data), png_file)) def test_get_screenshot_using_local_chrome(self): url, token = self.code_build.get_server_details_from_logs() self.jp.set_url(url).set_token(token) self.jp.login() #self.jp.open('aaa') self.png_file = self.jp.screenshot() Dev.pprint(self.png_file) def test_get_screenshot_using_lambda(self): self.aws_lambda = Lambda_Package( 'osbot_jupyter.lambdas.jupyter_server') url, token = self.code_build.get_server_details_from_logs() #print(url,token) #return notebook = 'test-1' payload = {'url': url, 'token': token, 'notebook': notebook} self.png_data = self.aws_lambda.invoke(payload)
def get_active_server_details(self): build_id = self.get_active_build_id() if build_id is None: return None #self.start_build_and_wait_for_jupyter_load() #build_id = self.get_active_build_id() code_build = CodeBuild_Jupyter(build_id) return code_build.get_server_details_from_logs()
def save_active_server_details(self, file): build_id = self.get_active_build_id() server, token = CodeBuild_Jupyter( build_id).get_server_details_from_logs() config = {'build_id': build_id, 'server': server, 'token': token} Json.save_file(file, config) return config
def start_build_for_repo_and_wait_for_jupyter_load(self, repo_name, user='******', server_size='small'): result = self.start_build_for_repo(repo_name=repo_name, user=user, server_size=server_size) if result: build_id = result.get('data') build = CodeBuild_Jupyter(build_id=build_id) return self.wait_for_jupyter_load(build)
def get_active_builds(self, project_name=None, stop_when_match=False): build_ids = list(self.code_build.project_builds_ids( self.project_name))[0:self.max_builds] build_infos = self.code_build.codebuild.batch_get_builds( ids=build_ids).get('builds') builds = {} for build_info in build_infos: build_id = build_info.get('id') if build_info.get('currentPhase') != 'COMPLETED': if project_name is None or project_name == build_info.get( 'projectName'): builds[build_id] = CodeBuild_Jupyter(build_id=build_id, build_info=build_info) if stop_when_match: return builds return builds
class test_CodeBuild_Jupyter(Test_Helper): def setUp(self): super().setUp() self.result = None self.build_id = 'OSBot-Jupyter:baea0626-3ad2-4e47-a41e-ff82ce5865ad' self.api = CodeBuild_Jupyter(build_id = self.build_id) def tearDown(self): if self.result: Dev.pprint(self.result) def test_start_new_build(self): self.build_id = CodeBuild_Jupyter_Helper().start_build_and_wait_for_jupyter_load().build_id print(self.build_id) self.api = CodeBuild_Jupyter(build_id=self.build_id) self.result = self.api.url() def test_build_info(self): self.result = self.api.build_info() def test_build_status__build_phase(self): assert self.api.build_status() == 'IN_PROGRESS' assert self.api.build_phase() == 'BUILD' def test_build_log_messages(self): messages = self.api.build_log_messages() assert 'Waiting for agent ping' in messages.pop(0) def test_get_server_details_from_logs(self): self.result = self.api.get_server_details_from_logs() def test_build_stop(self): assert self.api.build_stop() == 'STOPPED' def test_url(self): self.result = self.api.url()
def test__find_detect_build_that_fails_to_build(self): build_id = 'OSBot-Jupyter:6581a0da-1f88-4346-874f-6b80ab071cf9' jp_code_build = CodeBuild_Jupyter(build_id) messages = jp_code_build.build_log_messages() print(' '.join(messages))
def test_start_new_build(self): self.build_id = CodeBuild_Jupyter_Helper().start_build_and_wait_for_jupyter_load().build_id print(self.build_id) self.api = CodeBuild_Jupyter(build_id=self.build_id) self.result = self.api.url()
def setUp(self): super().setUp() self.result = None self.build_id = 'OSBot-Jupyter:baea0626-3ad2-4e47-a41e-ff82ce5865ad' self.api = CodeBuild_Jupyter(build_id = self.build_id)
def code_build_Jupyter(self): if self._code_build_Jupyter is None and self.build_id: self._code_build_Jupyter = CodeBuild_Jupyter(self.build_id) return self._code_build_Jupyter
def setUp(self): self.code_build = CodeBuild_Jupyter() self.jp = Jupyter() self.png_data = None
def start_build(self): build_arn = self.code_build.build_start() build_id = build_arn.split('build/').pop() return CodeBuild_Jupyter(build_id=build_id)