Vodafone Test Suite
Dependencies: mbed-rtos mbed HTTPClient VodafoneUSBModem
Tests/Test00.cpp@74:e52ac9624f7f, 2014-01-29 (annotated)
- Committer:
- ashleymills
- Date:
- Wed Jan 29 16:34:38 2014 +0000
- Revision:
- 74:e52ac9624f7f
- Parent:
- 73:effa8fcd45fc
Updated dependencies to latest versions.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ashleymills | 66:6b00a764e549 | 1 | #include "Test00.h" |
ashleymills | 66:6b00a764e549 | 2 | #include "socket.h" |
ashleymills | 67:a61d60fa342c | 3 | #include "TestHelper.h" |
ashleymills | 66:6b00a764e549 | 4 | |
ashleymills | 66:6b00a764e549 | 5 | const char *gTest00DNSIn[5] = { |
ashleymills | 66:6b00a764e549 | 6 | "m2mthings.com", |
ashleymills | 66:6b00a764e549 | 7 | "kent.ac.uk", |
ashleymills | 73:effa8fcd45fc | 8 | "fungi.com", |
ashleymills | 66:6b00a764e549 | 9 | "m2mcontroller.com", |
ashleymills | 66:6b00a764e549 | 10 | "www.mbed.org", |
ashleymills | 66:6b00a764e549 | 11 | }; |
ashleymills | 66:6b00a764e549 | 12 | |
ashleymills | 66:6b00a764e549 | 13 | const char *gTest00DNSOut[5] = { |
ashleymills | 66:6b00a764e549 | 14 | "109.74.199.96", |
ashleymills | 66:6b00a764e549 | 15 | "129.12.10.249", |
ashleymills | 73:effa8fcd45fc | 16 | "208.43.141.141", |
ashleymills | 66:6b00a764e549 | 17 | "62.105.171.138", |
ashleymills | 66:6b00a764e549 | 18 | "217.140.101.20", |
ashleymills | 66:6b00a764e549 | 19 | }; |
ashleymills | 66:6b00a764e549 | 20 | |
ashleymills | 66:6b00a764e549 | 21 | const int gTest00NumDNSVals = 5; |
ashleymills | 66:6b00a764e549 | 22 | |
ashleymills | 66:6b00a764e549 | 23 | Test00::Test00(VodafoneUSBModem *m) : VodafoneTestCase(m) {} |
ashleymills | 66:6b00a764e549 | 24 | |
ashleymills | 66:6b00a764e549 | 25 | void Test00::setupTest() {} |
ashleymills | 66:6b00a764e549 | 26 | |
ashleymills | 66:6b00a764e549 | 27 | bool Test00::executeTest() { |
ashleymills | 66:6b00a764e549 | 28 | bool outcome = true; |
ashleymills | 66:6b00a764e549 | 29 | LOG("Description: %s",gTest00Description); |
ashleymills | 66:6b00a764e549 | 30 | LOG("Connecting to internet"); |
ashleymills | 69:4fc3b0ad12c7 | 31 | if(_modem->connect(APN,APN_USERNAME,APN_PASSWORD)==0) { |
ashleymills | 66:6b00a764e549 | 32 | LOG("Connected to internet"); |
ashleymills | 66:6b00a764e549 | 33 | } else { |
ashleymills | 66:6b00a764e549 | 34 | LOG("Failed to connect to internet"); |
ashleymills | 66:6b00a764e549 | 35 | outcome = false; |
ashleymills | 66:6b00a764e549 | 36 | } |
ashleymills | 66:6b00a764e549 | 37 | |
ashleymills | 66:6b00a764e549 | 38 | // try connecting to DNS server directly |
ashleymills | 66:6b00a764e549 | 39 | int sockfd; |
ashleymills | 66:6b00a764e549 | 40 | //if(connectToSocket("88.82.13.28",53,&sockfd)) { |
ashleymills | 66:6b00a764e549 | 41 | |
ashleymills | 66:6b00a764e549 | 42 | if(connectToSocket("109.74.199.96",80,&sockfd)) { |
ashleymills | 66:6b00a764e549 | 43 | close(sockfd); |
ashleymills | 66:6b00a764e549 | 44 | } |
ashleymills | 66:6b00a764e549 | 45 | |
ashleymills | 66:6b00a764e549 | 46 | |
ashleymills | 66:6b00a764e549 | 47 | struct hostent *server; |
ashleymills | 66:6b00a764e549 | 48 | do { |
ashleymills | 66:6b00a764e549 | 49 | while(1) { |
ashleymills | 66:6b00a764e549 | 50 | LOG("Getting host address"); |
ashleymills | 66:6b00a764e549 | 51 | server = ::gethostbyname("m2mthings.com"); |
ashleymills | 66:6b00a764e549 | 52 | if(server==NULL) { |
ashleymills | 66:6b00a764e549 | 53 | LOG("Failure getting host address!"); |
ashleymills | 66:6b00a764e549 | 54 | outcome = false; |
ashleymills | 66:6b00a764e549 | 55 | //break; |
ashleymills | 66:6b00a764e549 | 56 | } else { |
ashleymills | 66:6b00a764e549 | 57 | LOG("got host address, length %d",server->h_length); |
ashleymills | 66:6b00a764e549 | 58 | break; |
ashleymills | 66:6b00a764e549 | 59 | } |
ashleymills | 66:6b00a764e549 | 60 | } |
ashleymills | 66:6b00a764e549 | 61 | |
ashleymills | 66:6b00a764e549 | 62 | if(server->h_length==4) { |
ashleymills | 66:6b00a764e549 | 63 | LOG("DNS lookup returned %d.%d.%d.%d", |
ashleymills | 66:6b00a764e549 | 64 | server->h_addr[0], |
ashleymills | 66:6b00a764e549 | 65 | server->h_addr[1], |
ashleymills | 66:6b00a764e549 | 66 | server->h_addr[2], |
ashleymills | 66:6b00a764e549 | 67 | server->h_addr[3] |
ashleymills | 66:6b00a764e549 | 68 | ); |
ashleymills | 66:6b00a764e549 | 69 | outcome = true; |
ashleymills | 66:6b00a764e549 | 70 | } else { |
ashleymills | 66:6b00a764e549 | 71 | LOG("Only IPv4 addresses are supported."); |
ashleymills | 66:6b00a764e549 | 72 | outcome = false; |
ashleymills | 66:6b00a764e549 | 73 | break; |
ashleymills | 66:6b00a764e549 | 74 | } |
ashleymills | 66:6b00a764e549 | 75 | } while(0); |
ashleymills | 66:6b00a764e549 | 76 | |
ashleymills | 66:6b00a764e549 | 77 | // this is the real test |
ashleymills | 66:6b00a764e549 | 78 | |
ashleymills | 66:6b00a764e549 | 79 | char dnsOut[32]; |
ashleymills | 66:6b00a764e549 | 80 | |
ashleymills | 66:6b00a764e549 | 81 | for(int i=0; i<gTest00NumDNSVals; i++) { |
ashleymills | 66:6b00a764e549 | 82 | LOG("Running DNS lookup for %s",gTest00DNSIn[i]); |
ashleymills | 66:6b00a764e549 | 83 | server = ::gethostbyname(gTest00DNSIn[i]); |
ashleymills | 66:6b00a764e549 | 84 | if(server==NULL) { |
ashleymills | 66:6b00a764e549 | 85 | LOG("Failure getting host address!"); |
ashleymills | 66:6b00a764e549 | 86 | outcome = false; |
ashleymills | 66:6b00a764e549 | 87 | break; |
ashleymills | 66:6b00a764e549 | 88 | } else { |
ashleymills | 66:6b00a764e549 | 89 | LOG("Got host address, length %d",server->h_length); |
ashleymills | 66:6b00a764e549 | 90 | } |
ashleymills | 66:6b00a764e549 | 91 | |
ashleymills | 66:6b00a764e549 | 92 | if(server->h_length==4) { |
ashleymills | 66:6b00a764e549 | 93 | sprintf(dnsOut,"%d.%d.%d.%d", |
ashleymills | 66:6b00a764e549 | 94 | server->h_addr[0], |
ashleymills | 66:6b00a764e549 | 95 | server->h_addr[1], |
ashleymills | 66:6b00a764e549 | 96 | server->h_addr[2], |
ashleymills | 66:6b00a764e549 | 97 | server->h_addr[3] |
ashleymills | 66:6b00a764e549 | 98 | ); |
ashleymills | 66:6b00a764e549 | 99 | LOG("DNS lookup returned %s",dnsOut); |
ashleymills | 66:6b00a764e549 | 100 | } else { |
ashleymills | 66:6b00a764e549 | 101 | LOG("Error. Only IPv4 addresses are supported."); |
ashleymills | 66:6b00a764e549 | 102 | outcome = false; |
ashleymills | 66:6b00a764e549 | 103 | break; |
ashleymills | 66:6b00a764e549 | 104 | } |
ashleymills | 66:6b00a764e549 | 105 | |
ashleymills | 66:6b00a764e549 | 106 | LOG("Expected %s, got %s",gTest00DNSOut[i],dnsOut); |
ashleymills | 66:6b00a764e549 | 107 | if(strcmp(dnsOut,gTest00DNSOut[i])!=0) { |
ashleymills | 66:6b00a764e549 | 108 | LOG("Mismatch. Fail."); |
ashleymills | 66:6b00a764e549 | 109 | outcome = false; |
ashleymills | 66:6b00a764e549 | 110 | break; |
ashleymills | 66:6b00a764e549 | 111 | } else { |
ashleymills | 66:6b00a764e549 | 112 | LOG("Match. OK."); |
ashleymills | 66:6b00a764e549 | 113 | } |
ashleymills | 66:6b00a764e549 | 114 | } |
ashleymills | 66:6b00a764e549 | 115 | |
ashleymills | 66:6b00a764e549 | 116 | _modem->disconnect(); |
ashleymills | 66:6b00a764e549 | 117 | return outcome; |
ashleymills | 66:6b00a764e549 | 118 | } |
ashleymills | 66:6b00a764e549 | 119 | |
ashleymills | 66:6b00a764e549 | 120 | void Test00::endTest() { } |