def replicate_integ_with_nth_change_missing(self, n):
        src_docker_cli = self.docker_clients['missing_nth_src']
        dst_docker_cli = self.docker_clients['missing_nth_dst']

        # create workspace
        depot_dir = '/depot/src_changes_missing%d' % n
        src_depot = '/%s/...' % depot_dir
        self.build_test_revision(src_docker_cli, depot_dir)

        src_changes = get_changelist_in_sample_depot(src_docker_cli, src_depot)
        src_counter = src_changes[n]

        # replicate
        if n != 0:
            replicate_sample_dir(depot_dir,
                                 src_docker_cli=src_docker_cli,
                                 dst_docker_cli=dst_docker_cli,
                                 obliterate=False,
                                 skip_verification=True,
                                 replicate_change_num=n)

        replicate_sample_dir(depot_dir,
                             src_docker_cli=src_docker_cli,
                             dst_docker_cli=dst_docker_cli,
                             src_counter=int(src_counter),
                             obliterate=False,
                             skip_verification=True)
    def replicate_sampledepot_integ_with_first_n_changes_missing(self, depot_dir, n):
        src_docker_cli = self.docker_clients['first_n_src']
        dst_docker_cli = self.docker_clients['first_n_dst']

        src_depot = '/%s/...' % depot_dir
        src_changes = get_changelist_in_sample_depot(src_docker_cli, src_depot)
        src_counter = src_changes[n]

        # replicate
        replicate_sample_dir(depot_dir,
                             src_docker_cli=src_docker_cli,
                             dst_docker_cli=dst_docker_cli,
                             src_counter=int(src_counter),
                             skip_verification=True)
    def test_replicate_sample_depot_obliterate2(self):
        '''obliterate a file revision which is created by "branch to"
        '''
        test_case = 'replicate_sample_depot_obliterate2'

        depot_dir = '/depot/Jamgraph'
        depot_file = '//depot/Jamgraph/REL1.0/src/jamgraph.vcproj#1'
        src_docker_cli = self.docker_clients['obliterate0']
        self.obliterate_file_rev(src_docker_cli, depot_file)

        replicate_sample_dir(depot_dir,
                             src_docker_cli=src_docker_cli,
                             dst_docker_cli=self.docker_clients[1],
                             do_integration_verification=False)

        logger.passed(test_case)
    def test_replicate_sample_depot_obliterate1(self):
        '''obliterate 2nd revision of a file
        '''
        test_case = 'replicate_sample_depot_obliterate1'

        depot_dir = '/depot/Misc/Artwork'
        depot_file = '//depot/Misc/Artwork/HQ.psd#2'
        src_docker_cli = self.docker_clients['obliterate1']
        self.obliterate_file_rev(src_docker_cli, depot_file)

        replicate_sample_dir(depot_dir,
                             src_docker_cli=src_docker_cli,
                             dst_docker_cli=self.docker_clients[1],
                             do_integration_verification=False)

        logger.passed(test_case)
    def test_replicate_sample_depot_obliterate3(self):
        '''obliterate a file revision which is used as "branch from" in future
        change
        '''
        test_case = 'replicate_sample_depot_obliterate3'

        depot_dir = '/depot/Jamgraph'
        depot_file = '//depot/Jamgraph/MAIN/src/jamgraph.vcproj#3'
        src_docker_cli = self.docker_clients['obliterate1']
        self.obliterate_file_rev(src_docker_cli, depot_file)

        replicate_sample_dir(depot_dir,
                             src_docker_cli=src_docker_cli,
                             dst_docker_cli=self.docker_clients[1],
                             do_integration_verification=False)

        logger.passed(test_case)
    def test_replicate_integ_with_no_missing_change(self):
        '''replication integrations with missing revisions, i.e. missing changes
        '''
        test_case = 'replicate_integ_with_missing_change'

        src_docker_cli = self.docker_clients['no_missing_src']
        dst_docker_cli = self.docker_clients['no_missing_dst']

        # create workspace
        depot_dir = '/depot/src_changes'
        self.build_test_revision(src_docker_cli, depot_dir)

        # replicate
        replicate_sample_dir(depot_dir,
                             src_docker_cli=src_docker_cli,
                             dst_docker_cli=dst_docker_cli)

        logger.passed(test_case)
    def test_replicate_with_additional_target_rev(self):
        '''replication integrations with additional revision in target depot.

        This test is designed for BENG-1447
        '''
        test_case = 'replicate_with_additional_target_rev'

        src_docker_cli = self.docker_clients['move_non_last_rev_src']
        dst_docker_cli = self.docker_clients['move_non_last_rev_dst']

        # create source revision graph
        depot_dir = '/depot/src_move_graph'
        from_file_path = self.build_test_revision_move(src_docker_cli, depot_dir)

        # replicate all changelists but the last one
        src_depot = '/%s/...' % depot_dir
        src_changes = get_changelist_in_sample_depot(src_docker_cli, src_depot)
        num_change = len(src_changes)

        replicate_sample_dir(depot_dir,
                             src_docker_cli=src_docker_cli,
                             dst_docker_cli=dst_docker_cli,
                             obliterate=False,
                             replicate_change_num=num_change-1)

        # add one revision in target "move from" file
        dst_depot_dir = '/depot/buildtest%s' % depot_dir
        from_file_name = os.path.basename(from_file_path)
        with get_p4d_from_docker(dst_docker_cli, dst_depot_dir) as dst_p4:
            dst_from_file_path = os.path.join(dst_p4.cwd, from_file_name)
            dst_p4.run_sync('-f')
            dst_p4.run_edit(dst_from_file_path)
            with open(dst_from_file_path, 'at') as f:
                f.write('target additional rev')
            dst_p4.run_submit('-d', 'target additional rev')

        # replicate the last changelist
        replicate_sample_dir(depot_dir,
                             src_docker_cli=src_docker_cli,
                             dst_docker_cli=dst_docker_cli,
                             src_counter=int(src_changes[-2]),
                             skip_verification=True)

        logger.passed(test_case)
 def replicate_sample_dir_withdocker(self, depot_dir):
     replicate_sample_dir(depot_dir,
                          src_docker_cli=self.docker_clients[0],
                          dst_docker_cli=self.docker_clients[1])