Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed-rtos mbed HTTPClient VodafoneUSBModem
Tests/Test01.cpp
- Committer:
- ashleymills
- Date:
- 2012-11-01
- Revision:
- 66:6b00a764e549
- Child:
- 69:4fc3b0ad12c7
File content as of revision 66:6b00a764e549:
#include "Test01.h"
class HTTPFileValidator : public IHTTPDataIn {
public:
HTTPFileValidator(int sockfd) {
_fileIsValid = false;
_bytesRead = 0;
}
bool isValid() {
return _fileIsValid;
}
int bytesRead() {
return _bytesRead;
}
protected:
//IHTTPDataIn
virtual int write(const char* buf, size_t len) {
int i = 0;
// do nothing if file already found invalid
if(!_fileIsValid)
return len;
// check that received characters are in correct sequence
for(i=0; i<len; i++) {
if(buf[i]!=_expectedChar) {
_fileIsValid = false;
break;
}
_expectedChar++;
if(_expectedChar==256) {
_expectedChar = 0;
}
}
_bytesRead += i;
return len;
}
virtual void writeReset() {
_fileIsValid = true;
_expectedChar = 0;
_bytesRead = 0;
}
virtual void setDataType(const char* type) {}
virtual void setIsChunked(bool chunked) {}
virtual void setDataLen(size_t len) {}
bool _fileIsValid;
char _expectedChar;
int _bytesRead;
};
Test01::Test01(VodafoneUSBModem *m) : VodafoneTestCase(m) {}
void Test01::setupTest() {}
bool Test01::executeTest() {
HTTPClient http;
char urlBuffer[125];
bool outcome = true;
LOG("Description: %s",gTest01Description);
LOG("Connecting to internet");
if(_modem->connect("internet","web","web")==0) {
LOG("Connected to internet");
} else {
LOG("Failed to connect to internet");
_modem->disconnect();
return false;
}
// retrieve files whose sizes are successive powers of 2 from 128 bytes upto 1MB
int bytesToRead = 128;
HTTPFileValidator fileValidator(0);
Timer t;
for(int i=0; i<14; i++) {
sprintf(urlBuffer,"http://www.m2mthings.com/test%d.txt",bytesToRead);
LOGX("Doing HTTP GET for %s ... ",urlBuffer);
// read the file
t.reset();
t.start();
if(http.get(urlBuffer, &fileValidator)!=0) {
LOG("ERROR reading file from website");
outcome = false;
t.stop();
break;
}
t.stop();
// check that all received bytes were valid, and that the total number of bytes read is as expected
if(fileValidator.isValid()&&fileValidator.bytesRead()==bytesToRead) {
LOG("OK. (%f seconds, %f kb/s)",t.read(),((float)bytesToRead/1000.0)/t.read());
} else {
LOG("ERROR in file validation after %f seconds and %d bytes read.",t.read(),fileValidator.bytesRead());
outcome = false;
break;
}
bytesToRead *= 2;
}
_modem->disconnect();
return outcome;
}
void Test01::endTest() { }

