/xmlbench/trunk

To get this branch, use:
bzr branch http://darksoft.org/webbzr/xmlbench/trunk
1 by Suren A. Chilingaryan
Initial import
1
#include <stdio.h>
2
#include <sys/time.h>
3
#include <gdome.h>
4
5
#include "tools.h"
6
7
GdomeDocument *doc;
8
9
void ds_xmlSetProp(GdomeNode *node, char *nm, char *val) {
10
    GdomeDOMString *dstr_nm, *dstr_val;
11
    GdomeException exc;
12
    dstr_nm=gdome_str_mkref_dup(nm);
13
    dstr_val=gdome_str_mkref_dup(val);
14
    gdome_el_setAttribute((GdomeElement*)node,dstr_nm,dstr_val,&exc);
15
    gdome_str_unref(dstr_nm);
16
    gdome_str_unref(dstr_val);
17
}
18
19
GdomeNode *ds_xmlNewChild(GdomeNode *node, char *nm, char *title, char *text) {
20
    GdomeDOMString *dstr;
21
    GdomeNode *rnode;
22
    GdomeException exc;
23
24
    dstr = gdome_str_mkref_dup(title);
25
    rnode=(GdomeNode*)gdome_doc_createElement(doc,dstr,&exc);
26
    gdome_str_unref(dstr);
27
    gdome_n_appendChild(node,(GdomeNode*)rnode,&exc);
28
    if (text) {
29
	dstr = gdome_str_mkref_dup(text);
30
	gdome_n_appendChild(rnode,(GdomeNode*)gdome_doc_createTextNode(doc,dstr,&exc),&exc);
31
	gdome_str_unref(dstr);
32
    }
33
34
    return rnode;
35
}
36
37
GdomeDOMImplementation *di;
38
39
void initXML(struct TestData *td) {
40
    di=gdome_di_mkref();
41
}
42
43
void releaseXML(struct TestData *td) {
44
    GdomeException exc;
45
    gdome_di_unref(di,&exc);
46
}
47
48
void parseXML(struct TestData *td, unsigned long iter) {
49
    GdomeNode *pnode,*node,*node1;
50
    GdomeException exc;
51
    GdomeDOMString *dstr;
52
    char *mem;
53
    char s[16];
54
    int i;
55
56
    dstr = gdome_str_mkref_dup("Envelope");
57
    doc=gdome_di_createDocument(di,NULL,dstr,NULL,&exc); gdome_str_unref(dstr); 
58
    pnode=(GdomeNode*)gdome_doc_documentElement(doc,&exc); 
59
    ds_xmlSetProp(pnode,"xmlns","http://www.w3.org/2001/12/soap-envelope");
60
    ds_xmlSetProp(pnode,"xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
61
    ds_xmlSetProp(pnode,"xmlns:enc","http://www.w3.org/2001/12/soap-encoding");
62
    node=ds_xmlNewChild(pnode,NULL,"Body",NULL);
63
    pnode=ds_xmlNewChild(pnode,NULL,"WriteResponse",NULL);
64
    ds_xmlSetProp(pnode,"xmlns","http://opcfoundation.org/webservices/OPCDA/");
65
    node=ds_xmlNewChild(pnode,NULL,"WriteResult",NULL);
66
    ds_xmlSetProp(node,"RcvTime","2002-04-29T10:16:26.6806250+02:00");
67
    ds_xmlSetProp(node,"ReplyTime","2002-04-29T10:16:26.7806250+02:00");
68
    ds_xmlSetProp(node,"ClientRequestHandle","WriteError");
69
    ds_xmlSetProp(node,"RevisedLocaleID","en");
70
    ds_xmlSetProp(node,"ServerState","running");
71
    node1=ds_xmlNewChild(pnode,NULL,"RItemList",NULL);
72
    node=ds_xmlNewChild(pnode,NULL,"Errors",NULL);
73
    ds_xmlSetProp(node,"ID","E_UNKNOWNITEMID");
74
    ds_xmlNewChild(node,NULL,"Text","The item does not exist in the server address space.");
75
    node=ds_xmlNewChild(pnode,NULL,"Errors",NULL);
76
    ds_xmlSetProp(node,"ID","S_CLAMP");
77
    ds_xmlNewChild(node,NULL,"Text","The value written was accepted but the output was clamped.");
78
79
    pnode=node1;
80
    node=ds_xmlNewChild(pnode,NULL,"Items",NULL);
81
    ds_xmlSetProp(node,"ItemPath","");
82
    ds_xmlSetProp(node,"ItemName","WrongItemID1");
83
    ds_xmlSetProp(node,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
84
    ds_xmlSetProp(node,"ErrorID","E_UNKNOWNITEMID");
85
    node1=ds_xmlNewChild(node,NULL,"Value",NULL);
86
    ds_xmlSetProp(node1,"xsi:nil","true");
87
88
    node=ds_xmlNewChild(pnode,NULL,"Items",NULL);
89
    ds_xmlSetProp(node,"ItemPath","");
90
    ds_xmlSetProp(node,"ItemName","WrongItemID2");
91
    ds_xmlSetProp(node,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
92
    ds_xmlSetProp(node,"ErrorID","E_UNKNOWNITEMID");
93
    node1=ds_xmlNewChild(node,NULL,"Value",NULL);
94
    ds_xmlSetProp(node1,"xsi:nil","true");
95
96
    node=ds_xmlNewChild(pnode,NULL,"Items",NULL);
97
    ds_xmlSetProp(node,"ItemPath","/Reals");
98
    ds_xmlSetProp(node,"ItemName","Float1");
99
    ds_xmlSetProp(node,"ValueType","xsd:float");
100
    ds_xmlSetProp(node,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
101
    node1=ds_xmlNewChild(node,NULL,"Value","10.0141414");
102
    ds_xmlSetProp(node1,"xsi:type","xsd:float");
103
104
    node=ds_xmlNewChild(pnode,NULL,"Items",NULL);
105
    ds_xmlSetProp(node,"ItemPath","/Reals");
106
    ds_xmlSetProp(node,"ItemName","Float2");
107
    ds_xmlSetProp(node,"ValueType","xsd:float");
108
    ds_xmlSetProp(node,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
109
    ds_xmlSetProp(node,"SuccessID","S_CLAMP");
110
    node1=ds_xmlNewChild(node,NULL,"Value","1.07");
111
    ds_xmlSetProp(node1,"xsi:type","xsd:float");
112
113
    for (i=0;i<td->inc;i++) {
114
	node=ds_xmlNewChild(pnode,NULL,"Items",NULL);
115
	ds_xmlSetProp(node,"ItemPath","/Integer");
116
        ds_xmlSetProp(node,"ItemName","IntN");
117
	ds_xmlSetProp(node,"ValueType","xsd:int");
118
        ds_xmlSetProp(node,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
119
        ds_xmlSetProp(node,"SuccessID","S_CLAMP");
120
	sprintf(s,"%u",rand());
121
	node1=ds_xmlNewChild(node,NULL,"Value",s);
122
        ds_xmlSetProp(node1,"xsi:type","xsd:int");
123
    }
124
2 by Suren A. Chilingaryan
Intel, Tango, Phobos, and RapidXML parsers; Memory benchmark scripts
125
    if (!td->memory_bench) {
126
	gdome_di_saveDocToMemory(di,doc,&mem,0,&exc);
127
	gdome_di_freeDoc(di,doc,&exc);
1 by Suren A. Chilingaryan
Initial import
128
    
2 by Suren A. Chilingaryan
Intel, Tango, Phobos, and RapidXML parsers; Memory benchmark scripts
129
//    	if (iter==td->iterations) puts(mem);
130
	free(mem);
131
    }
1 by Suren A. Chilingaryan
Initial import
132
}
133
134
int main(int argc, char *argv[]) {
135
    return Test(argc,argv);
136
}