/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 <sablot.h>
4
#include <sdom.h>
5
6
#include "tools.h"
7
8
SablotSituation *parser;
9
10
void initXML(struct TestData *td) {
11
    parser = new SablotSituation;
12
    SablotCreateSituation(parser);
13
}
14
15
void releaseXML(struct TestData *td) {
16
    SablotDestroySituation(*parser);
17
    delete parser;
18
}
19
20
21
void parseXML(struct TestData *td, unsigned long iter) {
22
    SDOM_Document dom;
23
    SDOM_Node pnode,node,tnode,node1,node2;
24
    SDOM_char *xmldoc;
25
    char s[16];
26
    unsigned long i;
27
28
    SablotCreateDocument(*parser, &dom);
29
    SDOM_createElementNS(*parser,dom,&pnode,"http://www.w3.org/2001/12/soap-envelope","Envelope");
30
    SDOM_appendChild(*parser,dom,pnode);
31
//    SDOM_setAttribute(*parser,pnode,"xmlns:soap","http://www.w3.org/2001/12/soap-envelope");
32
    SDOM_setAttribute(*parser,pnode,"xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
33
    SDOM_setAttribute(*parser,pnode,"xmlns:enc","http://www.w3.org/2001/12/soap-encoding");
34
    SDOM_createElement(*parser,dom,&node,"Body");
35
    SDOM_appendChild(*parser,pnode,node); pnode=node;
36
    SDOM_createElementNS(*parser,dom,&node,"http://opcfoundation.org/webservices/OPCDA/","WriteResponse");
37
    SDOM_appendChild(*parser,pnode,node); pnode=node;
38
    SDOM_createElement(*parser,dom,&node,"WriteResult");
39
    SDOM_setAttribute(*parser,node,"RcvTime","2002-04-29T10:16:26.6806250+02:00");
40
    SDOM_setAttribute(*parser,node,"ReplyTime","2002-04-29T10:16:26.7806250+02:00");
41
    SDOM_setAttribute(*parser,node,"ClientRequestHandle","WriteError");
42
    SDOM_setAttribute(*parser,node,"RevisedLocaleID","en");
43
    SDOM_setAttribute(*parser,node,"ServerState","running");
44
    SDOM_appendChild(*parser,pnode,node);
45
    SDOM_createElement(*parser,dom,&node1,"RItemList");
46
    SDOM_appendChild(*parser,pnode,node1);
47
    SDOM_createElement(*parser,dom,&node,"Errors");
48
    SDOM_setAttribute(*parser,node,"ID","E_UNKNOWNITEMID");
49
    SDOM_appendChild(*parser,pnode,node);
50
    SDOM_createElement(*parser,dom,&node2,"Text");
51
    SDOM_appendChild(*parser,node,node2);    
52
    SDOM_createTextNode(*parser,dom,&tnode,"The item does not exist in the server address space.");
53
    SDOM_appendChild(*parser,node2,tnode);
54
    SDOM_createElement(*parser,dom,&node,"Errors");
55
    SDOM_setAttribute(*parser,node,"ID","S_CLAMP");
56
    SDOM_appendChild(*parser,pnode,node);
57
    SDOM_createElement(*parser,dom,&node2,"Text");
58
    SDOM_appendChild(*parser,node,node2);    
59
    SDOM_createTextNode(*parser,dom,&tnode,"The value written was accepted but the output was clamped.");
60
    SDOM_appendChild(*parser,node2,tnode);
61
62
    pnode=node1;
63
    SDOM_createElement(*parser,dom,&node,"Items");
64
    SDOM_setAttribute(*parser,node,"ItemPath","");
65
    SDOM_setAttribute(*parser,node,"ItemName","WrongItemID1");
66
    SDOM_setAttribute(*parser,node,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
67
    SDOM_setAttribute(*parser,node,"ErrorID","E_UNKNOWNITEMID");
68
    SDOM_appendChild(*parser,pnode,node);
69
    SDOM_createElement(*parser,dom,&node1,"Value");
70
    SDOM_appendChild(*parser,node,node1);
71
    SDOM_setAttribute(*parser,node1,"xsi:nil","true");
72
73
    SDOM_createElement(*parser,dom,&node,"Items");
74
    SDOM_setAttribute(*parser,node,"ItemPath","");
75
    SDOM_setAttribute(*parser,node,"ItemName","WrongItemID2");
76
    SDOM_setAttribute(*parser,node,"Timestamp","0001-01-01T00:00:00.0000000+01:00");
77
    SDOM_setAttribute(*parser,node,"ErrorID","E_UNKNOWNITEMID");
78
    SDOM_appendChild(*parser,pnode,node);
79
    SDOM_createElement(*parser,dom,&node1,"Value");
80
    SDOM_appendChild(*parser,node,node1);
81
    SDOM_setAttribute(*parser,node1,"xsi:nil","true");
82
83
    SDOM_createElement(*parser,dom,&node,"Items");
84
    SDOM_setAttribute(*parser,node,"ItemPath","/Reals");
85
    SDOM_setAttribute(*parser,node,"ItemName","Float1");
86
    SDOM_setAttribute(*parser,node,"ValueType","xsd:float");
87
    SDOM_setAttribute(*parser,node,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
88
    SDOM_appendChild(*parser,pnode,node);
89
    SDOM_createElement(*parser,dom,&node1,"Value");
90
    SDOM_appendChild(*parser,node,node1);
91
    SDOM_setAttribute(*parser,node1,"xsi:type","xsd:float");
92
    SDOM_createTextNode(*parser,dom,&tnode,"10.0141414");
93
    SDOM_appendChild(*parser,node1,tnode);
94
95
    SDOM_createElement(*parser,dom,&node,"Items");
96
    SDOM_setAttribute(*parser,node,"ItemPath","/Reals");
97
    SDOM_setAttribute(*parser,node,"ItemName","Float2");
98
    SDOM_setAttribute(*parser,node,"ValueType","xsd:float");
99
    SDOM_setAttribute(*parser,node,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
100
    SDOM_setAttribute(*parser,node,"SuccessID","S_CLAMP");
101
    SDOM_appendChild(*parser,pnode,node);
102
    SDOM_createElement(*parser,dom,&node1,"Value");
103
    SDOM_appendChild(*parser,node,node1);
104
    SDOM_setAttribute(*parser,node1,"xsi:type","xsd:float");
105
    SDOM_createTextNode(*parser,dom,&tnode,"1.07");
106
    SDOM_appendChild(*parser,node1,tnode);
107
    
108
    for (i=0;i<td->inc;i++) {
109
        SDOM_createElement(*parser,dom,&node,"Items");
110
	SDOM_setAttribute(*parser,node,"ItemPath","/Integer");
111
        SDOM_setAttribute(*parser,node,"ItemName","IntN");
112
	SDOM_setAttribute(*parser,node,"ValueType","xsd:int");
113
        SDOM_setAttribute(*parser,node,"Timestamp","2002-04-29T11:47:18.1493750+02:00");
114
        SDOM_setAttribute(*parser,node,"SuccessID","S_CLAMP");
115
	SDOM_appendChild(*parser,pnode,node);
116
        SDOM_createElement(*parser,dom,&node1,"Value");
117
	SDOM_appendChild(*parser,node,node1);
118
	SDOM_setAttribute(*parser,node1,"xsi:type","xsd:int");
119
	sprintf(s,"%u",rand());
120
        SDOM_createTextNode(*parser,dom,&tnode,s);
121
        SDOM_appendChild(*parser,node1,tnode);
122
    }
2 by Suren A. Chilingaryan
Intel, Tango, Phobos, and RapidXML parsers; Memory benchmark scripts
123
124
    if (!td->memory_bench) {
125
        SDOM_docToString(*parser,dom,&xmldoc);
126
//   	if (iter==td->iterations) puts(xmldoc);
127
	free(xmldoc);
128
    }
1 by Suren A. Chilingaryan
Initial import
129
    SablotDestroyDocument(*parser,dom);
130
}
131
132
133
int main(int argc, char *argv[]) {
134
    return Test(argc,argv);
135
}