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

io.github.microcks.util.test.AbstractTestRunner Maven / Gradle / Ivy

The newest version!
/*
 * Copyright The Microcks Authors.
 *
 * 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.
 */
package io.github.microcks.util.test;

import io.github.microcks.domain.*;

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

/**
 * A runner responsible for running test on a given service endpoint. The tests consists in sending a bunch of reference
 * requests to the endpoint and extract informations from acquired responses (or communication failures !) in order to
 * determine if test has passed or not.
 * @author laurent
 */
public abstract class AbstractTestRunner {

   /**
    * Run a test for a specified service and operation.
    * @param service     The service under test
    * @param operation   The operation to test
    * @param testResult  The container for test results
    * @param requests    A set of reference requests for operation
    * @param endpointUrl The URL of endpoint to test
    * @param method      The method that applies for requesting service (retrieved using buildMethod() method)
    * @return A list of TestReturn corresponding to the result of test for each reference requests. Returns indices
    *         matches reference request indices.
    * @throws java.net.URISyntaxException if endpointUrl cannot be transformed as URI
    * @throws java.io.IOException         in case of network failure mainly
    */
   public abstract List runTest(Service service, Operation operation, TestResult testResult,
         List requests, String endpointUrl, T method) throws URISyntaxException, IOException;

   /**
    * (interpretation is subject to implementation)
    * @param method String representation of method
    * @return Object representing method
    */
   public abstract T buildMethod(String method);

   /**
    * Build a single string value from values set.
    * @param values Strings to build value from
    * @return Comma separated string of values
    */
   protected String buildValue(Set values) {
      if (values == null || values.isEmpty()) {
         return null;
      }
      StringBuilder result = new StringBuilder();
      Iterator iterator = values.iterator();
      result.append(iterator.next());
      while (iterator.hasNext()) {
         result.append(",");
         result.append(iterator.next());
      }

      return result.toString();
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy