Ejemplo n.º 1
0
char*
fullurl(URLwin *u, Rune *rhref)
{
	char *base, *href, *hrefbase;
	char *result;

	if(rhref == nil)
		return estrdup("NULL URL");
	href = runetobyte(rhref, runestrlen(rhref));
	hrefbase = baseurl(href);
	result = nil;
	if(hrefbase==nil && (base = baseurl(u->url))!=nil){
		result = estrdup(base);
		if(base[strlen(base)-1]!='/' && (href==nil || href[0]!='/'))
			result = eappend(result, "/", "");
		free(base);
	}
	if(href){
		if(result)
			result = eappend(result, "", href);
		else
			result = estrdup(href);
	}
	free(hrefbase);
	if(result == nil)
		return estrdup("***unknown***");
	return result;
}
Ejemplo n.º 2
0
bool TestExtServer::test_pagelet_server_task_result() {
    const int TEST_SIZE = 20;

    String baseurl("pageletserver?getparam=");
    String baseheader("MyHeader: ");
    String basepost("postparam=");

    std::vector<Object> tasks;
    for (int i = 0; i < TEST_SIZE; ++i) {
        String url = baseurl + String(i);
        String header = baseheader + String(i);
        String post = basepost + String(i);
        Object task = f_pagelet_server_task_start(url, CREATE_VECTOR1(header),
                      post);
        tasks.push_back(task);
    }

    for (int i = 0; i < TEST_SIZE; ++i) {
        f_pagelet_server_task_status(tasks[i]);
    }

    // Calls that time out (try 1 ms) should return a status code of -1
    for (int i = 0; i < TEST_SIZE; ++i) {
        Variant code, headers;
        VS("", f_pagelet_server_task_result(tasks[i], ref(headers), ref(code), 1));
        VS(code, -1);
    }

    for (int i = 0; i < TEST_SIZE; ++i)  {
        String expected = "pagelet postparam: postparam=";
        expected += String(i);
        expected += "pagelet getparam: ";
        expected += String(i);
        expected += "pagelet header: ";
        expected += String(i);

        // A timeout of 0 indicates an infinite timeout that blocks.
        Variant code, headers;
        VS(expected, f_pagelet_server_task_result(tasks[i], ref(headers),
                ref(code), 0));
        VS(code, 200);
        VS(headers[1], "ResponseHeader: okay");

        VS(expected, f_pagelet_server_task_result(tasks[i], ref(headers),
                ref(code), 1));
        VS(code, 200);
    }

    return Count(true);
}
Ejemplo n.º 3
0
bool TestExtServer::test_pagelet_server_task_result() {
  const int TEST_SIZE = 20;

  String baseurl("ext/pageletserver?getparam=");
  String baseheader("MyHeader: ");
  String basepost("postparam=");

  std::vector<Resource> tasks;
  for (int i = 0; i < TEST_SIZE; ++i) {
    String url = baseurl + String(i);
    String header = baseheader + String(i);
    String post = basepost + String(i);
    Resource task = HHVM_FN(pagelet_server_task_start)(url,
      make_packed_array(header), post);
    tasks.push_back(task);
  }

  for (int i = 0; i < TEST_SIZE; ++i) {
    HHVM_FN(pagelet_server_task_status)(tasks[i]);
  }

  // Calls that time out (try 1 ms) should return a status code of -1
  for (int i = 0; i < TEST_SIZE; ++i) {
    Variant code, headers;
    VS("", HHVM_FN(pagelet_server_task_result)(tasks[i], ref(headers),
                                               ref(code), 1));
    VS(code, -1);
  }

  for (int i = 0; i < TEST_SIZE; ++i)  {
    String expected = "pagelet postparam: postparam=";
    expected += String(i);
    expected += "pagelet getparam: ";
    expected += String(i);
    expected += "pagelet header: ";
    expected += String(i);

    // A timeout of 0 indicates an infinite timeout that blocks.
    Variant code, headers;
    VS(expected, HHVM_FN(pagelet_server_task_result)(tasks[i], ref(headers),
                                                     ref(code), 0));
    VS(code, 200);

    Array headerArray = headers.toArray();
    bool hasResponseHeader = false;
    String expectedHeader = String("ResponseHeader: okay");

    for (int headerIdx = 0; headerIdx < headerArray.size(); headerIdx++) {
      if (headerArray[headerIdx].toString() == expectedHeader) {
        hasResponseHeader = true;
        break;
      }
    }
    VERIFY(hasResponseHeader);
    VS(expected, HHVM_FN(pagelet_server_task_result)(tasks[i], ref(headers),
                                                     ref(code), 1));
    VS(code, 200);
  }

  return Count(true);
}