com.thoughtworks.go.helpers.LocalhostWithLargeDataSets.java Source code

Java tutorial

Introduction

Here is the source code for com.thoughtworks.go.helpers.LocalhostWithLargeDataSets.java

Source

/*************************GO-LICENSE-START*********************************
 * Copyright 2014 ThoughtWorks, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *************************GO-LICENSE-END***********************************/

package com.thoughtworks.go.helpers;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;

import com.thoughtworks.go.domain.Pipeline;
import com.thoughtworks.go.helper.PipelineMother;
import com.thoughtworks.go.server.dao.JobInstanceDao;
import com.thoughtworks.go.server.dao.DatabaseAccessHelper;
import com.thoughtworks.go.util.ZipUtil;
import org.apache.commons.io.FileUtils;

public class LocalhostWithLargeDataSets extends Localhost {
    private static final int PORT = 7493;
    private static final String PIPELINE_NAME = "studios";

    LocalhostWithLargeDataSets(int port, String overrideConfigFilePath, List<String> pipelineNames,
            List<String> baseStageNames, List<String> baseBuildNames) throws Exception {
        super(port, overrideConfigFilePath, pipelineNames, baseStageNames, baseBuildNames);
    }

    // 1. ant stop-db
    // 2. start this manually in IntelliJ:
    //
    public static void main(String[] args) throws Exception {
        DataUtils.cloneCCHome();

        int port = PORT;
        String sourceConfigFilePath = "test/data/4stages5builds-cruise-config.xml";
        int numberOfPipelines = 5000;

        LocalhostWithLargeDataSets localhostWithLargeDataSets = new LocalhostWithLargeDataSets(port,
                sourceConfigFilePath, Arrays.asList(PIPELINE_NAME),
                Arrays.asList("stage1", "stage2", "stage3", "stage4"),
                Arrays.asList("build1", "build2", "build3", "build4", "build5"));
        prepareSampleDataFromZipFile();
        mainAction(localhostWithLargeDataSets, numberOfPipelines);
    }

    @Override
    protected void prepareSampleData(int numberOfPipelines) throws Exception {
        //DO NOTHING
    }

    private static void prepareSampleDataFromZipFile() throws IOException {
        File dbDir = new File("db/hsqldb");
        File unzipped = unzipDatabaseFile(dbDir);
        FileUtils.copyFile(unzipped, new File(dbDir, "cruise.script"));
    }

    private static File unzipDatabaseFile(File dbDir) throws IOException {
        ZipUtil unzipUtil = new ZipUtil();
        String dataFileName = "5000pipelinesx4stagesx5buildplans.script";
        File srcZip = new File(dbDir, dataFileName + ".zip");
        unzipUtil.unzip(srcZip, dbDir);
        File unzipped = new File(dbDir, dataFileName);
        return unzipped;
    }

    @Override
    protected void createLatestPipelines(DatabaseAccessHelper dbHelper, JobInstanceDao jobInstanceDao)
            throws SQLException {
        createBuildingAndScheduledDataAsLatestPipeline(dbHelper, PIPELINE_NAME);
    }

    private void createBuildingAndScheduledDataAsLatestPipeline(DatabaseAccessHelper dbHelper, String pipelineName)
            throws SQLException {
        Pipeline pipeline = PipelineMother.firstStageBuildingAndSecondStageScheduled(pipelineName, baseStageNames,
                baseBuildNames);
        dbHelper.save(pipeline);
    }

}