# -*- encoding: UTF8 -*- # Test harness for depot_verify_chunks.py from __future__ import print_function import sys import unittest import os import re import P4 curr_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, os.path.join(curr_dir, "..", "..", "bin", "triggers", "tests")) from p4testutils import TestCase, P4Server, localDirectory, create_file, append_to_file from depot_verify_chunks import depot_verify_chunks, parse_human_fmt os.environ["LOGS"] = "." LOGGER_NAME = "Testdepot_verify_chunks" LOG_FILE = "log-Testdepot_verify_chunks.log" class Testdepot_verify_chunks(TestCase): def __init__(self, methodName='runTest'): super(Testdepot_verify_chunks, self).__init__(LOGGER_NAME, LOG_FILE, methodName=methodName) def setUp(self): self.server = P4Server() p4 = self.server.p4 self.p4 = p4 p4.logger = self.logger def tearDown(self): pass def testParse(self): """Check parsing of args""" valid_args = {'1': 1, '1.9': 1, '1k': 1024, '1.1m': int(1024 * 1024 * 1.1), '2k': 2 * 1024, '.5k': 512, '.5K': 512, '1G': 1024 * 1024 * 1024} for k in valid_args.keys(): exp = valid_args[k] act = parse_human_fmt(k) self.assertEqual(exp, act, "Expected %s got %d" % (exp, act)) invalid_args = ['a', ' 1.', '1.9c', '1.2.3'] for k in invalid_args: try: act = parse_human_fmt(k) self.assertFalse(True, "Expected assertion error for %s" % (k)) except TypeError: pass def testdepot_verify_chunks(self): """check that fixes are appropriate controlled""" p4 = self.p4 files = localDirectory(self.server.client_root, "files") d1 = localDirectory(files, "d1") d2 = localDirectory(files, "d2") for i in range(10): f = os.path.join(d1, "file_%d" % i) create_file(f, "0123456789\n" * 10) f = os.path.join(d2, "file_%d" % i) create_file(f, "0123456789\n" * 10) p4.run_add("%s/..." % files) p4.run_submit("-d", "Initial change") dvc = depot_verify_chunks("-p", p4.port, "-u", p4.user, "-m", "1000000", "//depot/...") results = dvc.run() self.assertEqual(['//depot/...'], results) dvc = depot_verify_chunks("-p", p4.port, "-u", p4.user, "-m", "1000", "//depot/...") results = dvc.run() self.assertEqual(['//depot/files/d1/*', '//depot/files/*', '//depot/files/d2/*', '//depot/*'], results) dvc = depot_verify_chunks("-p", p4.port, "-u", p4.user, "-m", "1500", "//depot/...") results = dvc.run() self.assertEqual(['//depot/files/d1/...', '//depot/files/*', '//depot/files/d2/...', '//depot/*'], results) p4.run_populate("//depot/files/...", "//depot/dev/...") dvc = depot_verify_chunks("-p", p4.port, "-u", p4.user, "-m", "1500", "//depot/...") results = dvc.run() self.assertEqual(['//depot/dev/...', '//depot/*', '//depot/files/d1/...', '//depot/files/*', '//depot/files/d2/...'], results) if __name__ == '__main__': unittest.main()