private ScheduleRunTest getScheduleRunTest()

in src/main/java/org/jenkinsci/plugins/awsdevicefarm/AWSDeviceFarmRecorder.java [817:1127]


    private ScheduleRunTest getScheduleRunTest(EnvVars env, AWSDeviceFarm adf, Project project, PrintStream log) throws InterruptedException, IOException, AWSDeviceFarmException {
        ScheduleRunTest testToSchedule = null;
        TestType testType = stringToTestType(testToRun);

        switch (testType) {
            case BUILTIN_FUZZ: {
                Map<String, String> parameters = new HashMap<String, String>();

                if (eventCount != null && !eventCount.isEmpty()) {
                    parameters.put("event_count", eventCount);
                }

                if (eventThrottle != null && !eventThrottle.isEmpty()) {
                    parameters.put("throttle", eventThrottle);
                }

                if (seed != null && !seed.isEmpty()) {
                    parameters.put("seed", seed);
                }

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withParameters(parameters);
                break;
            }

            case BUILTIN_EXPLORER: {
                Map<String, String> parameters = new HashMap<String, String>();

                if (username != null && !username.isEmpty()) {
                    parameters.put("username", username);
                }

                if (password != null && !password.isEmpty()) {
                    parameters.put("password", password);
                }

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withParameters(parameters);
                break;
            }

            case APPIUM_JAVA_JUNIT: {
                AppiumJavaJUnitTest test = new AppiumJavaJUnitTest.Builder()
                        .withTests(env.expand(appiumJavaJUnitTest))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn());

                testToSchedule.addParametersEntry("appium_version", appiumVersionJunit);
                break;
            }

            case APPIUM_JAVA_TESTNG: {
                AppiumJavaTestNGTest test = new AppiumJavaTestNGTest.Builder()
                        .withTests(env.expand(appiumJavaTestNGTest))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn());

                testToSchedule.addParametersEntry("appium_version", appiumVersionTestng);
                break;
            }

            case APPIUM_PYTHON: {
                AppiumPythonTest test = new AppiumPythonTest.Builder()
                        .withTests(env.expand(appiumPythonTest))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn());

                testToSchedule.addParametersEntry("appium_version", appiumVersionPython);
                break;
            }

            case APPIUM_RUBY: {
                AppiumRubyTest test = new AppiumRubyTest.Builder()
                        .withTests(env.expand(appiumRubyTest))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn());

                break;
            }

            case APPIUM_NODE: {
                AppiumNodeTest test = new AppiumNodeTest.Builder()
                        .withTests(env.expand(appiumNodeTest))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn());

                break;
            }

            case APPIUM_WEB_JAVA_JUNIT: {
                AppiumWebJavaJUnitTest test = new AppiumWebJavaJUnitTest.Builder()
                        .withTests(env.expand(appiumJavaJUnitTest))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn());

                testToSchedule.addParametersEntry("appium_version", appiumVersionJunit);
                break;
            }

            case APPIUM_WEB_JAVA_TESTNG: {
                AppiumWebJavaTestNGTest test = new AppiumWebJavaTestNGTest.Builder()
                        .withTests(env.expand(appiumJavaTestNGTest))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn());

                testToSchedule.addParametersEntry("appium_version", appiumVersionTestng);
                break;
            }

            case APPIUM_WEB_PYTHON: {
                AppiumWebPythonTest test = new AppiumWebPythonTest.Builder()
                        .withTests(env.expand(appiumPythonTest))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn());

                testToSchedule.addParametersEntry("appium_version", appiumVersionPython);
                break;
            }

            case APPIUM_WEB_RUBY: {
                AppiumWebRubyTest test = new AppiumWebRubyTest.Builder()
                        .withTests(env.expand(appiumRubyTest))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn());

                break;
            }

            case APPIUM_WEB_NODE: {
                AppiumWebNodeTest test = new AppiumWebNodeTest.Builder()
                        .withTests(env.expand(appiumNodeTest))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn());

                break;
            }

            case CALABASH: {
                CalabashTest test = new CalabashTest.Builder()
                        .withFeatures(env.expand(calabashFeatures))
                        .withTags(env.expand(calabashTags))
                        .withProfile(env.expand(calabashProfile))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                Map<String, String> parameters = new HashMap<String, String>();
                if (test.getTags() != null && !test.getTags().isEmpty()) {
                    parameters.put("tags", test.getTags());
                }
                if (test.getProfile() != null && !test.getProfile().isEmpty()) {
                    parameters.put("profile", test.getProfile());
                }
                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn())
                        .withParameters(parameters);
                break;
            }

            case INSTRUMENTATION: {
                InstrumentationTest test = new InstrumentationTest.Builder()
                        .withArtifact(env.expand(junitArtifact))
                        .withFilter(env.expand(junitFilter))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn())
                        .withParameters(new HashMap<String, String>())
                        .withFilter(test.getFilter());
                break;
            }

            case UIAUTOMATOR: {
                UIAutomatorTest test = new UIAutomatorTest.Builder()
                        .withTests(env.expand(uiautomatorArtifact))
                        .withFilter(env.expand(uiautomatorFilter))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn())
                        .withParameters(new HashMap<String, String>())
                        .withFilter(test.getFilter());

                break;
            }

            case UIAUTOMATION: {
                UIAutomationTest test = new UIAutomationTest.Builder()
                        .withTests(uiautomationArtifact)
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withTestPackageArn(upload.getArn());
                break;
            }

            case XCTEST: {
                XCTestTest test = new XCTestTest.Builder()
                        .withTests(xctestArtifact)
                        .withFilter(env.expand(xctestFilter))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withFilter(test.getFilter())
                        .withTestPackageArn(upload.getArn());
                break;
            }

            case XCTEST_UI: {

                XCTestUITest test = new XCTestUITest.Builder()
                        .withTests(xctestUiArtifact)
                        .withFilter(env.expand(xctestUiFilter))
                        .build();

                Upload upload = adf.uploadTest(project, test);

                testToSchedule = new ScheduleRunTest()
                        .withType(testType)
                        .withFilter(test.getFilter())
                        .withTestPackageArn(upload.getArn());
                break;
            }

            default: {
                writeToLog(log, String.format("Cannot schedule unknown test type '%s'", testType));
            }

        }

		if (StringUtils.isNotBlank(environmentToRun)) {
			switch (environmentToRun) {

			case STANDARD_ENVIRONMENT: {
				break;
			}

			case CUSTOM_ENVIRONMENT: {
				Upload testSpec = adf.getTestSpec(project, testSpecName);
				testToSchedule.setTestSpecArn(testSpec.getArn());
				break;
			}
			}
		}
		return testToSchedule;
    }