blob: 5fbb890a5beabf0369c28a94ba194990380380f2 [file] [log] [blame]
<?xml version="1.0" ?>
<!--
This is a DTD for flood configuration files.
With this file, validating XML software and
heading line:
<!DOCTYPE flood SYSTEM "flood.dtd">
...you can make sure your flood configuration
is valid (in contrast to just "well-formed").
-->
<!ELEMENT flood (urllist+,profile+,farmer+,farm+,seed?)>
<!-- urllist -->
<!ELEMENT urllist (name,description?,baseurl?,(url|sequence)+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT baseurl (#PCDATA)>
<!ELEMENT url (#PCDATA)>
<!ATTLIST url method (GET | POST | HEAD) #IMPLIED>
<!ATTLIST url payload CDATA #IMPLIED>
<!ATTLIST url payloadparam CDATA #IMPLIED>
<!ATTLIST url payloadparamcount CDATA #IMPLIED>
<!ATTLIST url payloadtemplate CDATA #IMPLIED>
<!ATTLIST url responsename CDATA #IMPLIED>
<!ATTLIST url responsetemplate CDATA #IMPLIED>
<!ATTLIST url requesttemplate CDATA #IMPLIED>
<!ATTLIST url requestparamcount CDATA #IMPLIED>
<!ATTLIST url predelay CDATA #IMPLIED>
<!ATTLIST url predelayprecision CDATA #IMPLIED>
<!ATTLIST url postdelay CDATA #IMPLIED>
<!ATTLIST url postdelayprecision CDATA #IMPLIED>
<!ATTLIST url user CDATA #IMPLIED>
<!ATTLIST url password CDATA #IMPLIED>
<!ATTLIST url Content-Type CDATA #IMPLIED>
<!ELEMENT sequence (url+)>
<!ATTLIST sequence sequencename CDATA #REQUIRED>
<!ATTLIST sequence sequencelist CDATA #REQUIRED>
<!-- profile -->
<!ENTITY % profile.events "(profile_init?,get_next_url?,create_req?,postprocess?,loop_condition?,profile_destroy?)+">
<!ENTITY % socket.events "(socket_init?,begin_conn?,send_req?,recv_resp?,end_conn?,request_destroy?,response_destroy?,socket_destroy?)+">
<!ENTITY % report.events "(report_init?,process_stats?,report_stats?,destroy_report?)+">
<!-- FIXME: this declaration doesn't exactly cover the flexibility of profile -->
<!ELEMENT profile (name,(description)?,useurllist,
(profiletype|%profile.events;),
(socket|%socket.events;),
verify_resp,
(report|%report.events;))>
<!ELEMENT useurllist (#PCDATA)>
<!ELEMENT profiletype (#PCDATA)>
<!ELEMENT socket (#PCDATA)>
<!ELEMENT verify_resp (#PCDATA)>
<!ELEMENT report (#PCDATA)>
<!ELEMENT profile_init (#PCDATA)>
<!ELEMENT get_next_url (#PCDATA)>
<!ELEMENT create_req (#PCDATA)>
<!ELEMENT postprocess (#PCDATA)>
<!ELEMENT loop_condition (#PCDATA)>
<!ELEMENT profile_destroy (#PCDATA)>
<!ELEMENT report_init (#PCDATA)>
<!ELEMENT process_stats (#PCDATA)>
<!ELEMENT report_stats (#PCDATA)>
<!ELEMENT destroy_report (#PCDATA)>
<!ELEMENT socket_init (#PCDATA)>
<!ELEMENT begin_conn (#PCDATA)>
<!ELEMENT send_req (#PCDATA)>
<!ELEMENT recv_resp (#PCDATA)>
<!ELEMENT end_conn (#PCDATA)>
<!ELEMENT request_destroy (#PCDATA)>
<!ELEMENT response_destroy (#PCDATA)>
<!ELEMENT socket_destroy (#PCDATA)>
<!-- farmer -->
<!ELEMENT farmer (name,description?,(count|time),useprofile+)>
<!ELEMENT count (#PCDATA)>
<!ELEMENT time (#PCDATA)>
<!ELEMENT useprofile (#PCDATA)>
<!-- farm -->
<!ELEMENT farm (name,description?,usefarmer+)>
<!ELEMENT usefarmer (#PCDATA)>
<!ATTLIST usefarmer count CDATA #IMPLIED>
<!ATTLIST usefarmer startcount CDATA #IMPLIED>
<!ATTLIST usefarmer startdelay CDATA #IMPLIED>
<!-- seed -->
<!ELEMENT seed (#PCDATA)>