Package ch.ethz.inf.vs.californium.plugtests.tests

Source Code of ch.ethz.inf.vs.californium.plugtests.tests.CC16

package ch.ethz.inf.vs.californium.plugtests.tests;

import java.net.URI;
import java.net.URISyntaxException;

import ch.ethz.inf.vs.californium.Utils;
import ch.ethz.inf.vs.californium.coap.CoAP.Code;
import ch.ethz.inf.vs.californium.coap.CoAP.ResponseCode;
import ch.ethz.inf.vs.californium.coap.CoAP.Type;
import ch.ethz.inf.vs.californium.coap.Request;
import ch.ethz.inf.vs.californium.coap.Response;
import ch.ethz.inf.vs.californium.plugtests.PlugtestChecker.TestClientAbstract;

/**
* TD_COAP_CORE_16: Perform GET transaction (CON mode, delayed response) in
* a lossy context
*
* @author Matthias Kovatsch
*/
public class CC16 extends TestClientAbstract {

  public static final String RESOURCE_URI = "/separate";
  public final ResponseCode EXPECTED_RESPONSE_CODE = ResponseCode.CONTENT;

  private static final long wait = 45 * 1000;

  public CC16(String serverURI) {
    super(CC16.class.getSimpleName());

    // create the request
    Request request = new Request(Code.GET, Type.CON);
    // set the parameters and execute the request
    executeRequest(request, serverURI, RESOURCE_URI);

  }

  protected boolean checkResponse(Request request, Response response) {
    boolean success = true;

    success &= checkType(Type.CON, response.getType());
    success &= checkInt(EXPECTED_RESPONSE_CODE.value,
        response.getCode().value, "code");
    success &= hasContentType(response);
    success &= hasNonEmptyPalyoad(response);

    return success;
  }
 
  @Override
  protected synchronized void executeRequest(Request request, String serverURI, String resourceUri) {

    // defensive check for slash
    if (!serverURI.endsWith("/") && !resourceUri.startsWith("/")) {
      resourceUri = "/" + resourceUri;
    }

    URI uri = null;
    try {
      uri = new URI(serverURI + resourceUri);
    } catch (URISyntaxException use) {
      System.err.println("Invalid URI: " + use.getMessage());
    }

    request.setURI(uri);

    // print request info
    if (verbose) {
      System.out.println("Request for test " + this.testName
          + " sent");
      Utils.prettyPrint(request);
    }

    // execute the request
    try {
      Response response = null;
      boolean success = true;
     
      request.send();
     
      response = request.waitForResponse(wait);
     
      if (response!=null) {
        success &= checkResponse(request, response);
      }
     
      /*
       * FIXME
       * Cf does not ACK duplicates when the client is waiting.
       * May be a threading problem.
       */
     
      response = request.waitForResponse(10000);
     
      if (response == null) {
        System.out.println("PASS: No duplicate");
      } else {
        System.out.println("FAIL: Duplicate");
        success = false;
      }

      if (success) {
        System.out.println("**** TEST PASSED ****");
        addSummaryEntry(testName + ": PASSED");
      } else {
        System.out.println("**** TEST FAILED ****");
        addSummaryEntry(testName + ": --FAILED--");
      }

      tickOffTest();
     
    } catch (InterruptedException e) {
      System.err.println("Interupted during receive: "
          + e.getMessage());
      System.exit(-1);
    }
  }
}
TOP

Related Classes of ch.ethz.inf.vs.californium.plugtests.tests.CC16

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.