def test_generate_stats_on_s3(): # Local imports are recommended when using moto from emmaa.analyze_tests_results import generate_stats_on_s3 from emmaa.util import find_number_of_files_on_s3, make_date_str from emmaa.model_tests import update_model_manager_on_s3 # Try with only one set of results first (as for new model/test) client = setup_bucket(add_results=True, add_mm=True, add_model=True) msg = generate_stats_on_s3('test', 'model', upload_stats=True, bucket=TEST_BUCKET_NAME) assert msg.latest_round assert not msg.previous_round assert not msg.previous_json_stats assert find_number_of_files_on_s3(TEST_BUCKET_NAME, 'model_stats/test/model_stats_') == 1 tsg = generate_stats_on_s3('test', 'tests', 'simple_tests', upload_stats=True, bucket=TEST_BUCKET_NAME) assert tsg.latest_round assert not tsg.previous_round assert not tsg.previous_json_stats assert find_number_of_files_on_s3(TEST_BUCKET_NAME, 'stats/test/test_stats_') == 1 # Now add new results and new mm time.sleep(1) update_model_manager_on_s3('test', TEST_BUCKET_NAME) client.put_object( Body=json.dumps(previous_results, indent=1), Bucket=TEST_BUCKET_NAME, Key=f'results/test/results_simple_tests_{make_date_str()}.json') msg = generate_stats_on_s3('test', 'model', upload_stats=True, bucket=TEST_BUCKET_NAME) assert msg.latest_round assert msg.previous_round assert msg.previous_json_stats assert find_number_of_files_on_s3(TEST_BUCKET_NAME, 'model_stats/test/model_stats_') == 2 tsg = generate_stats_on_s3('test', 'tests', 'simple_tests', upload_stats=True, bucket=TEST_BUCKET_NAME) assert tsg.latest_round assert tsg.previous_round assert tsg.previous_json_stats assert find_number_of_files_on_s3(TEST_BUCKET_NAME, 'stats/test/test_stats_') == 2
import argparse from emmaa.analyze_tests_results import generate_stats_on_s3 if __name__ == '__main__': parser = argparse.ArgumentParser( description='Script to generate statistic for the latest round of' 'tests and save to Amazon S3.') parser.add_argument('-m', '--model', help='Model name', required=True) parser.add_argument('-s', '--stats_mode', help='Mode of stats (model or' ' tests)', required=True) parser.add_argument( '-t', '--tests', default='large_corpus_tests', help='Test file name.', ) args = parser.parse_args() generate_stats_on_s3(model_name=args.model, mode=args.stats_mode, test_corpus_str=args.tests, upload_stats=True)