Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | updated |
|---|---|
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
d07351188b1b4f9f133d90962da43a9d |
| User & Date: | monster 2012-07-24 17:27:34.765 |
Context
|
2012-07-24
| ||
| 22:17 | sha/rsa for xdata check-in: 718eda106a user: monster tags: trunk | |
| 17:27 | updated check-in: d07351188b user: monster tags: trunk | |
| 17:26 | updated check-in: ace7839bf1 user: monster tags: trunk | |
Changes
Added tests/cgi.c.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
#define _LIBYOYO
#include "../yoyo.hc"
#include "../cgi.hc"
#include "../httpd.hc"
#include "../httpx.hc"
#include "../webhost.hc"
#include "../prog.hc"
#include "../tesuite.hc"
void test_client_simple(YO_CGI *cgi)
{
Tesuite_Case("CGI: test simple");
Cgi_Append(cgi,"SIMPLE",-1);
Cgi_Write_Out(cgi,YO_CGI_OUT_TEXTHTML);
Tesuite_Case_Successed();
}
void test_client()
{
__Auto_Release
{
char *test;
YO_CGI *cgi = Cgi_Init();
Cgi_Query_Params(cgi,0,0);
test = Xnode_Value_Get_Str(cgi->params,"test",0);
if ( !test )
;
else if ( !strcmp_I(test,"simple") )
test_client_simple(cgi);
}
}
void test_server_0()
{
Tesuite_Case("client/server: simple GET request");
__Auto_Release
{
int http_status;
YO_BUFFER *bf = Buffer_Init(0);
YO_WEBHOST *webhost = Webhost_Init();
YO_HTTPD *httpd = Httpd_Server(Webhost_Callback,webhost);
Webhost_Set_Exec_Root(webhost,Prog_Directory());
Httpd_Listen(httpd,"0.0.0.0",9000);
http_status = Httpx_Get(0,"http://localhost:9000/cgi?test=simple",0,Buffer_As_File(bf),0);
Httpd_Shutdown(httpd);
while ( Tasque_Perform_Update(0,0) ) ;
if ( http_status != 200 || !bf->count || !!strcmp(bf->at,"SIMPLE") )
__Raise_Format(YO_ERROR_TESUITE_FAIL,("response: %d, %s",http_status,bf->at?bf->at:"<null>"));
}
Tesuite_Case_Successed();
}
int main(int argc, char **argv)
{
Prog_Init(argc,argv,0,0);
__Try_Abort
{
Tesuite_Init();
if ( getenv("GATEWAY_INTERFACE") )
{
Tesuite_Perform(test_client());
}
else
Tesuite_Perform(test_server_0());
}
}
|
Added tests/httpx.c.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#define _LIBYOYO
#include "../yoyo.hc"
#include "../prog.hc"
#include "../file.hc"
#include "../httpx.hc"
int main(int argc, char **argv)
{
int i;
Prog_Init(argc,argv,"?|h,a",PROG_EXIT_ON_ERROR);
__Try_Exit(0)
{
int flags = Prog_Has_Opt("a")?HTTPX_ASYNC:0;
for ( i = 0; i < Prog_Arguments_Count(); ++i ) __Auto_Release
{
YO_URL *url = Url_Parse(Prog_Argument(i));
Httpx_Get(Httpx_Client(url->endpoint,flags),url->uri,0,Cfile_Open(Path_Basename(url->query),"w+"),-1);
}
if ( flags&HTTPX_ASYNC )
while ( Tasque_Perform_Update(10,0) )
{;}
}
return 0;
}
|
Added tests/xddb.c.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
#define _LIBYOYO
#include "../xddbfs.hc"
#include "../prog.hc"
#include "../tesuite.hc"
YO_XDDB *Open_Xddb(int create_new)
{
char *db_source = Prog_Arguments_Count()?Prog_Argument(0):"xddb";
YO_XDDB *xddb;
if ( 0 ) ;
else
{
xddb = Xddbfs_Open(db_source,create_new,XDDB_FORMAT_TEXT,0);
}
return xddb;
}
void test_0()
{
__Auto_Release
{
YO_XDDB *xddb;
YO_XDATA *doc;
char *key;
char *unique;
Tesuite_Case("create/read/delete document");
xddb = Open_Xddb(XDDB_CREATE_ALWAYS);
Tesuite_Info(__Format("xddb test, source: %s, format: %s",
Xddb_Source_String(xddb),
Xddb_Format_String(xddb)));
unique = Xddb_Build_Unique_Key();
doc = Xdata_Init();
Xnode_Value_Set_Str(&doc->root,"unique",unique);
key = Xddb_Unique(xddb,doc);
doc = Xddb_Get(xddb,key,XDDB_RAISE_IF_DSNT_EXSIS);
if ( strcmp(Xnode_Value_Get_Str(&doc->root,"unique",""),unique) )
__Raise(YO_ERROR_TESUITE_FAIL,"document is not consistent");
Xddb_Delete(xddb,key);
if ( Xddb_Has(xddb,key) )
__Raise(YO_ERROR_TESUITE_FAIL,"document still present in store");
Tesuite_Case_Successed();
}
}
void test_1()
{
__Auto_Release
{
YO_XDDB *xddb;
YO_XDATA *doc;
char *key;
char *unique;
unique = Xddb_Build_Unique_Key();
__Auto_Ptr(key)
{
Tesuite_Case("create db/create document");
xddb = Open_Xddb(XDDB_CREATE_ALWAYS);
Tesuite_Info(__Format("xddb test, source: %s, format: %s",
Xddb_Source_String(xddb),
Xddb_Format_String(xddb)));
doc = Xdata_Init();
Xnode_Value_Set_Str(&doc->root,"unique",unique);
key = Xddb_Unique(xddb,doc);
Tesuite_Info(__Format("document key: %s",key));
Tesuite_Case_Successed();
}
__Auto_Release
{
Tesuite_Case("open db/get document");
xddb = Open_Xddb(XDDB_OPEN_EXISTING);
Tesuite_Info(__Format("xddb test, source: %s, format: %s",
Xddb_Source_String(xddb),
Xddb_Format_String(xddb)));
Tesuite_Info(__Format("document key: %s",key));
doc = Xddb_Get(xddb,key,XDDB_RAISE_IF_DSNT_EXSIS);
if ( strcmp(Xnode_Value_Get_Str(&doc->root,"unique",""),unique) )
__Raise(YO_ERROR_TESUITE_FAIL,"document is not consistent");
Tesuite_Case_Successed();
}
__Auto_Release
{
Tesuite_Case("open db/delete document");
xddb = Open_Xddb(XDDB_OPEN_EXISTING);
Tesuite_Info(__Format("xddb test, source: %s, format: %s",
Xddb_Source_String(xddb),
Xddb_Format_String(xddb)));
Tesuite_Info(__Format("document key: %s",key));
Xddb_Delete(xddb,key);
if ( Xddb_Has(xddb,key) )
__Raise(YO_ERROR_TESUITE_FAIL,"document still present in store");
Tesuite_Case_Successed();
}
}
}
int main(int argc, char **argv)
{
Prog_Init(argc,argv,"fs,ldb,sql3,msql",0);
__Try_Abort
{
Tesuite_Init();
Tesuite_Perform(test_0());
Tesuite_Perform(test_1());
}
}
|