All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.cloudslang.lang.tools.build.tester.runconfiguration.TestRunInfoServiceImpl Maven / Gradle / Ivy

There is a newer version: 2.0.94
Show newest version
/*******************************************************************************
 * (c) Copyright 2016 Hewlett-Packard Development Company, L.P.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Apache License v2.0 which accompany this distribution.
 *
 * The Apache License is available at
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 *******************************************************************************/
package io.cloudslang.lang.tools.build.tester.runconfiguration;


import io.cloudslang.lang.tools.build.SlangBuildMain.TestCaseRunMode;
import io.cloudslang.lang.tools.build.tester.parse.SlangTestCase;
import io.cloudslang.lang.tools.build.tester.runconfiguration.strategy.ConflictResolutionStrategy;
import io.cloudslang.lang.tools.build.tester.runconfiguration.strategy.DefaultResolutionStrategy;

import javax.annotation.PostConstruct;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

/**
 * Service for managing test and test suite run information
 */
public class TestRunInfoServiceImpl implements TestRunInfoService {

    private ConcurrentMap runModeMap;

    @PostConstruct
    public void initialize() {
        runModeMap = new ConcurrentHashMap<>();
    }

    @Override
    public TestCaseRunMode getRunModeForTestSuite(final String testSuite) {
        return doGetTestSuiteRunMode(testSuite);
    }

    @Override
    public void setRunModeForTestSuite(final String testSuite, final TestCaseRunMode runMode) {
        doSetRunModeForTestSuite(runMode, testSuite);
    }

    @Override
    public void setRunModeForTestSuites(final List testSuites, final TestCaseRunMode runMode) {
        for (String testSuite : testSuites) {
            doSetRunModeForTestSuite(runMode, testSuite);
        }
    }

    @Override
    public TestCaseRunMode getRunModeForTestCase(final SlangTestCase testCase,
                                                 final ConflictResolutionStrategy conflictStrategy,
                                                 final DefaultResolutionStrategy defaultStrategy) {
        List testSuites = testCase.getTestSuites();
        if (testSuites.isEmpty()) {
            return defaultStrategy.getDefaultWhenUnspecified();
        }

        TestCaseRunMode result = null;
        for (String testSuite : testSuites) {
            result = conflictStrategy.resolve(result, doGetTestSuiteRunMode(testSuite));
        }
        if (result == null) {
            return defaultStrategy.getDefaultWhenUnspecified();
        }
        return result;
    }

    private TestCaseRunMode doGetTestSuiteRunMode(String testSuite) {
        return runModeMap.get(testSuite);
    }

    private void doSetRunModeForTestSuite(TestCaseRunMode runMode, String testSuite) {
        runModeMap.put(testSuite, runMode);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy