~ubuntu-branches/ubuntu/intrepid/curl/intrepid

« back to all changes in this revision

Viewing changes to tests/libtest/lib502.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2007-05-16 15:16:54 UTC
  • mfrom: (1.1.7 upstream)
  • Revision ID: james.westby@ubuntu.com-20070516151654-jo48r81zempo1qav
Tags: 7.16.2-3ubuntu1
* Merge with Debian; remaining changes:
  - Drop the stunnel build dependency.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*****************************************************************************
 
2
 *                                  _   _ ____  _
 
3
 *  Project                     ___| | | |  _ \| |
 
4
 *                             / __| | | | |_) | |
 
5
 *                            | (__| |_| |  _ <| |___
 
6
 *                             \___|\___/|_| \_\_____|
 
7
 *
 
8
 * $Id: lib502.c,v 1.7 2007-03-10 00:19:05 yangtse Exp $
 
9
 */
 
10
 
1
11
#include "test.h"
2
12
 
 
13
#include "testutil.h"
 
14
 
 
15
#define MAIN_LOOP_HANG_TIMEOUT     90 * 1000
 
16
#define MULTI_PERFORM_HANG_TIMEOUT 60 * 1000
 
17
 
3
18
/*
4
19
 * Get a single URL without select().
5
20
 */
8
23
{
9
24
  CURL *c;
10
25
  CURLM *m;
11
 
  CURLMcode res;
 
26
  int res = 0;
12
27
  int running=1;
13
 
 
14
 
  curl_global_init(CURL_GLOBAL_ALL);
15
 
  c = curl_easy_init();
 
28
  struct timeval mp_start;
 
29
  char mp_timedout = FALSE;
 
30
 
 
31
  if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
 
32
    fprintf(stderr, "curl_global_init() failed\n");
 
33
    return TEST_ERR_MAJOR_BAD;
 
34
  }
 
35
 
 
36
  if ((c = curl_easy_init()) == NULL) {
 
37
    fprintf(stderr, "curl_easy_init() failed\n");
 
38
    curl_global_cleanup();
 
39
    return TEST_ERR_MAJOR_BAD;
 
40
  }
 
41
 
16
42
  curl_easy_setopt(c, CURLOPT_URL, URL);
17
 
  m = curl_multi_init();
18
 
 
19
 
  res = curl_multi_add_handle(m, c);
 
43
 
 
44
  if ((m = curl_multi_init()) == NULL) {
 
45
    fprintf(stderr, "curl_multi_init() failed\n");
 
46
    curl_easy_cleanup(c);
 
47
    curl_global_cleanup();
 
48
    return TEST_ERR_MAJOR_BAD;
 
49
  }
 
50
 
 
51
  if ((res = (int)curl_multi_add_handle(m, c)) != CURLM_OK) {
 
52
    fprintf(stderr, "curl_multi_add_handle() failed, "
 
53
            "with code %d\n", res);
 
54
    curl_multi_cleanup(m);
 
55
    curl_easy_cleanup(c);
 
56
    curl_global_cleanup();
 
57
    return TEST_ERR_MAJOR_BAD;
 
58
  }
 
59
 
 
60
  mp_timedout = FALSE;
 
61
  mp_start = tutil_tvnow();
 
62
 
20
63
  while (running) {
21
 
    res = curl_multi_perform(m, &running);
 
64
    res = (int)curl_multi_perform(m, &running);
 
65
    if (tutil_tvdiff(tutil_tvnow(), mp_start) > 
 
66
        MULTI_PERFORM_HANG_TIMEOUT) {
 
67
      mp_timedout = TRUE;
 
68
      break;
 
69
    }
22
70
    if (running <= 0) {
23
71
      fprintf(stderr, "nothing left running.\n");
24
72
      break;
25
73
    }
26
74
  }
 
75
 
 
76
  if (mp_timedout) {
 
77
    if (mp_timedout) fprintf(stderr, "mp_timedout\n");
 
78
    fprintf(stderr, "ABORTING TEST, since it seems "
 
79
            "that it would have run forever.\n");
 
80
    res = TEST_ERR_RUNS_FOREVER;
 
81
  }
 
82
 
27
83
  curl_multi_remove_handle(m, c);
28
84
  curl_easy_cleanup(c);
29
85
  curl_multi_cleanup(m);
 
86
  curl_global_cleanup();
30
87
 
31
88
  return res;
32
89
}