diff --git a/.cproject b/.cproject
index d173782..96f0e75 100644
--- a/.cproject
+++ b/.cproject
@@ -3,8 +3,8 @@
-
-
+
+
@@ -16,27 +16,27 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
@@ -45,19 +45,19 @@
-
-
-
+
+
+
-
-
+
make
- libACTK1_0.so
+
+ all
true
true
true
@@ -70,44 +70,23 @@
true
true
-
+
make
- tests
+
+ dclean
true
true
true
make
+
dirs
true
true
true
-
- make
- dclean
- true
- true
- true
-
-
- make
-
- all
- false
- true
- true
-
-
- make
-
- build/LPChkExtension.o
- true
- true
- false
-
-
+
make
clean
@@ -115,96 +94,14 @@
true
true
-
+
make
- all
- true
- true
- true
-
-
- make
- tests
- true
- true
- true
-
-
- make
-
- clean
- true
- true
- true
-
-
- make
dirs
true
true
true
-
- make
- apig-cli
- true
- true
- true
-
-
- make
-
- build/commander.o
- true
- true
- true
-
-
- make
-
- build/ausreg-cd
- true
- true
- true
-
-
- make
-
- cliever
- true
- true
- true
-
-
- make
-
- all
- true
- true
- true
-
-
- make
- all
- true
- true
- true
-
-
- make
- tests
- true
- true
- true
-
-
- make
- clean
- true
- true
- true
-
make
@@ -213,27 +110,19 @@
true
true
-
+
make
- clean
- false
- true
- true
-
-
- make
- distclean
- true
- true
- true
-
-
- make
- build/ausreg-md
+
+ all
true
true
true
+
+
+
+
+
diff --git a/ACTK1_0/Makefile b/ACTK1_0/Makefile
index 4e79cbd..b5feeaf 100644
--- a/ACTK1_0/Makefile
+++ b/ACTK1_0/Makefile
@@ -117,7 +117,7 @@ $(BUILD_OBJ_DIR)/%: $(BUILD_OBJ_DIR)/%.o
#
ARTKOBJS=build/XMLGregorianCalendar.o build/XMLParser.o build/XMLWriter.o build/ACSession.o build/DomainAddRem.o \
build/EnumDomainInfoResponse.o build/log.o build/PostalInfoType.o build/SessionManagerPropertiesImpl.o \
-build/RegistrantObjectType.o build/LPExtension.o build/LPChkCmdExtension.o build/LPCrtCmdExtension.o build/LPCrtRespExtension.o\
+build/RegistrantObjectType.o build/LPExtension.o \
build/AddRemType.o build/DomainCheckResponse.o build/EnumDomainUpdateCommand.o build/Properties.o build/SessionPoolImpl.o \
build/boolean.o build/DomainCreateCommand.o build/EnumType.o build/ProtocolExtensionCommand.o build/SSLException.o \
build/CertificateUserMismatchException.o build/DomainCreateResponse.o build/EPPDateFormatter.o build/ReceiveSE.o build/StandardCommandType.o \
@@ -138,7 +138,8 @@ build/CreateResponse.o build/DomainUpdateSyncCommandExtension
build/DataResponse.o build/E164Extension.o build/Logger.o \
build/SMDExtension.o build/ACProxyCommand.o \
build/PollResponse.o build/SessionManagerFactory.o \
-build/Disclose.o build/EnumDomainCreateCommand.o build/LoginCommand.o build/PostalInfo.o build/SessionManagerImpl.o
+build/Disclose.o build/EnumDomainCreateCommand.o build/LoginCommand.o build/PostalInfo.o \
+build/SessionManagerImpl.o build/LPChkCmdExtension.o build/LPCrtCmdExtension.o build/LPCrtRespExtension.o
.PHONY: tests
tests: all $(test_execs)
diff --git a/ACTK1_0/se/LPE/LPCrtCmdExtension.cpp b/ACTK1_0/se/LPE/LPCrtCmdExtension.cpp
index 6f68a47..cc6b45b 100644
--- a/ACTK1_0/se/LPE/LPCrtCmdExtension.cpp
+++ b/ACTK1_0/se/LPE/LPCrtCmdExtension.cpp
@@ -17,9 +17,10 @@ namespace {
}
}; // anonymous namespace
-void LPCrtCmdExtension::setSMD()
+void LPCrtCmdExtension::setSMD(std::string smdIn)
{
haveSMD = true;
+ smdData = smdIn;
}
void LPCrtCmdExtension::addToCommand(const Command &command) const
diff --git a/ACTK1_0/se/LPE/LPCrtCmdExtension.hpp b/ACTK1_0/se/LPE/LPCrtCmdExtension.hpp
index ec81964..bf9cf68 100644
--- a/ACTK1_0/se/LPE/LPCrtCmdExtension.hpp
+++ b/ACTK1_0/se/LPE/LPCrtCmdExtension.hpp
@@ -19,13 +19,15 @@ class LPCrtCmdExtension : public CommandExtension
void setNoticeID(string &idVal,string ¬AftVal, string &acceptedVal) {
noticeID = idVal; notAfter = notAftVal; acceptedDate = acceptedVal; haveNoticeID = true;
}
- void setSMD();
+ void setSMD(std::string toWhat);
private:
- bool haveNoticeID,haveSMD;
+ bool haveNoticeID,haveSMD;
+
+ std::string acceptedDate;
std::string lpePhaseName;
std::string noticeID;
std::string notAfter;
- std::string acceptedDate;
+ std::string smdData;
};
@@ -43,78 +45,4 @@ inline LPCrtCmdExtension::LPCrtCmdExtension( const std::string *phaseName)
#endif // __DOMAIN_UPDATE_COMMAND_EXTENSION_HPP
-// just here for exploratory purposes
-static const string smdData(
-"DQo8c21kOnNpZ25lZE1hcmsgeG1sbnM6c21kPSJ1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOnNpZ25l"
-"ZE1hcmstMS4wIiBpZD0iX3NpZ25lZE1hcmsiPjxzbWQ6aWQ+MS0yPC9zbWQ6aWQ+DQogIDwhLS0g"
-"aW5zZXJ0IHNtZDppZCAtLT4NCiAgPHNtZDppc3N1ZXJJbmZvIGlzc3VlcklEPSIyIj4NCiAgICA8"
-"c21kOm9yZz5FeGFtcGxlIEluYy48L3NtZDpvcmc+DQogICAgPHNtZDplbWFpbD5zdXBwb3J0QGV4"
-"YW1wbGUudGxkPC9zbWQ6ZW1haWw+DQogICAgPHNtZDp1cmw+aHR0cDovL3d3dy5leGFtcGxlLnRs"
-"ZDwvc21kOnVybD4NCiAgICA8c21kOnZvaWNlIHg9IjEyMzQiPisxLjcwMzU1NTU1NTU8L3NtZDp2"
-"b2ljZT4NCiAgPC9zbWQ6aXNzdWVySW5mbz48c21kOm5vdEJlZm9yZT4yMDA5LTA4LTE2VDA5OjAw"
-"OjAwLjBaPC9zbWQ6bm90QmVmb3JlPjxzbWQ6bm90QWZ0ZXI+MjA5OS0wOC0xNlQwOTowMDowMC4w"
-"Wjwvc21kOm5vdEFmdGVyPg0KICA8IS0tIGluc2VydCBzbWQ6bm90QmVmb3JlIC0tPg0KICA8IS0t"
-"IGluc2VydCBzbWQ6bm90QWZ0ZXIgLS0+DQogIDxtYXJrOm1hcmsgeG1sbnM6bWFyaz0idXJuOmll"
-"dGY6cGFyYW1zOnhtbDpuczptYXJrLTEuMCI+DQogICAgPG1hcms6dHJhZGVtYXJrPg0KICAgICAg"
-"PG1hcms6aWQ+MTIzNC0yPC9tYXJrOmlkPjxtYXJrOm1hcmtOYW1lPmJvw650ZSBkZSB0ZXN0PC9t"
-"YXJrOm1hcmtOYW1lPg0KICAgICAgPCEtLSBpbnNlcnQgbWFyazptYXJrTmFtZSAtLT4NCiAgICAg"
-"IDxtYXJrOmhvbGRlciBlbnRpdGxlbWVudD0ib3duZXIiPg0KICAgICAgICA8bWFyazpvcmc+RXhh"
-"bXBsZSBJbmMuPC9tYXJrOm9yZz4NCiAgICAgICAgPG1hcms6YWRkcj4NCiAgICAgICAgICA8bWFy"
-"azpzdHJlZXQ+MTIzIEV4YW1wbGUgRHIuPC9tYXJrOnN0cmVldD4NCiAgICAgICAgICA8bWFyazpz"
-"dHJlZXQ+U3VpdGUgMTAwPC9tYXJrOnN0cmVldD4NCiAgICAgICAgICA8bWFyazpjaXR5PlJlc3Rv"
-"bjwvbWFyazpjaXR5Pg0KICAgICAgICAgIDxtYXJrOnNwPlZBPC9tYXJrOnNwPg0KICAgICAgICAg"
-"IDxtYXJrOnBjPjIwMTkwPC9tYXJrOnBjPg0KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNj"
-"Pg0KICAgICAgICA8L21hcms6YWRkcj4NCiAgICAgIDwvbWFyazpob2xkZXI+DQogICAgICA8bWFy"
-"azpqdXJpc2RpY3Rpb24+VVM8L21hcms6anVyaXNkaWN0aW9uPg0KICAgICAgPG1hcms6Y2xhc3M+"
-"MzU8L21hcms6Y2xhc3M+DQogICAgICA8bWFyazpjbGFzcz4zNjwvbWFyazpjbGFzcz48bWFyazps"
-"YWJlbD5ib2l0ZWRldGVzdDwvbWFyazpsYWJlbD48bWFyazpsYWJlbD5ib2l0ZWRlLXRlc3Q8L21h"
-"cms6bGFiZWw+PG1hcms6bGFiZWw+Ym9pdGUtZGUtdGVzdDwvbWFyazpsYWJlbD4NCiAgICAgIDwh"
-"LS0gaW5zZXJ0IG1hcms6bGFiZWwgLS0+DQogICAgICA8bWFyazpnb29kc0FuZFNlcnZpY2VzPg0K"
-"ICAgICAgICBEaXJpZ2VuZGFzIGV0IGVpdXNtb2RpDQogICAgICAgIGZlYXR1cmluZyBpbmZyaW5n"
-"byBpbiBhaXJmYXJlIGV0IGNhcnRhbSBzZXJ2aWNpYS4NCiAgICAgIDwvbWFyazpnb29kc0FuZFNl"
-"cnZpY2VzPg0KICAgICAgPG1hcms6cmVnTnVtPjIzNDIzNTwvbWFyazpyZWdOdW0+DQogICAgICA8"
-"bWFyazpyZWdEYXRlPjIwMDktMDgtMTZUMDk6MDA6MDAuMFo8L21hcms6cmVnRGF0ZT4NCiAgICAg"
-"IDxtYXJrOmV4RGF0ZT4yMDk5LTA4LTE2VDA5OjAwOjAwLjBaPC9tYXJrOmV4RGF0ZT4NCiAgICA8"
-"L21hcms6dHJhZGVtYXJrPg0KICA8L21hcms6bWFyaz4NCjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6"
-"Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0"
-"aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMx"
-"NG4jIiAvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAx"
-"LzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2IiAvPjxSZWZlcmVuY2UgVVJJPSIjX3NpZ25lZE1h"
-"cmsiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y"
-"MDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIgLz48VHJhbnNmb3JtIEFsZ29yaXRo"
-"bT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPjwvVHJhbnNmb3Jt"
-"cz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxl"
-"bmMjc2hhMjU2IiAvPjxEaWdlc3RWYWx1ZT5CK2R6NWtzdno4K3FQbFMzUE8rKy93UnYxdEFRU1VE"
-"NkhjaFZPTzkyN2FFPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWdu"
-"YXR1cmVWYWx1ZT5VZ3VJQm5oRElRQXNqUTlkTkFRcXVDR3h5Q2o3UTlYV3FxSHdDa2xKZHpkMi9H"
-"bDB2UHVwb282aFV4cUprU3lPbjI5OTZlQ1Z5NjQ0c3AvQVFISzl2N1VFRGJWcmp4WFlPT2JuVUQ1"
-"RUlLMEcxbnM0UEh5MkhBSjNiVlNPL1JuVG4rU25KV1o1d0hSWHg2ZjhLd0pIUThVUHg0R3Q5SVZy"
-"elRHQ0NwSkduMkU1djFTbjlTTXFDcWY4M1ZiMkxFellQbTg2Zkw4NUNwZmNFK2t0YnNsZHFmZno0"
-"RXMyU2lobG9vY1BtaEJIeTg0eVNUS05MVWtmcXI4ZXk1YU1QeThHb2ErMXVHM1UwS2g0Zk5nZGdL"
-"RmZUZnhBUHN0RCtYTzEwQTB3OCtxQnRQZFFwcVgwQVZKbUNSR04vRk52UWNCb0RvV1U5K2FsSEtq"
-"c29sNXZRTDc0QWc9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5Q2Vy"
-"dGlmaWNhdGU+TUlJRHNEQ0NBcGdDQVFFd0RRWUpLb1pJaHZjTkFRRUZCUUF3Z2FFeEN6QUpCZ05W"
-"QkFZVEFsVlRNUk13RVFZRFZRUUlEQXBYWVhOb2FXNW5kRzl1TVJFd0R3WURWUVFIREFoQ1pXeHNa"
-"WFoxWlRFUE1BMEdBMVVFQ2d3R1JHOXVkWFJ6TVEwd0N3WURWUVFMREFSVVpYTjBNU1V3SXdZRFZR"
-"UUREQngwYldOb2RHVnpkSEp2YjNSalpYSjBNUzF2ZEdVdFpHOXVkWFJ6TVNNd0lRWUpLb1pJaHZj"
-"TkFRa0JGaFJvYjNOMGJXRnpkR1Z5UUdSdmJuVjBjeTVqYnpBZUZ3MHhNekEzTVRBd05qUTNNelJh"
-"RncweU16QTNNRGd3TmpRM016UmFNSUdaTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNBd0tW"
-"MkZ6YUdsdVozUnZiakVSTUE4R0ExVUVCd3dJUW1Wc2JHVjJkV1V4RHpBTkJnTlZCQW9NQmtSdmJu"
-"VjBjekVOTUFzR0ExVUVDd3dFVkdWemRERWRNQnNHQTFVRUF3d1VjMjFrWTJWeWRERXhMVzkwWlMx"
-"a2IyNTFkSE14SXpBaEJna3Foa2lHOXcwQkNRRVdGR2h2YzNSdFlYTjBaWEpBWkc5dWRYUnpMbU52"
-"TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF3dEhkdmRtMTFJaVM5"
-"aG02RkM1QlNKNmdEM2kxRGx1S2QyU0dpYWdjOU5WZmFKSW95RlhENlRzMjR5cDdIWHFrcitrMGdq"
-"RjF3Tng5R0MrTkV5N0h6Vmo1TFNQQ0p0NEFobEZKWjlVbnVjYWRyWm55bVhuUWZwK2xRSXkyaEor"
-"c3UxbTN4c3NXemdRYjgwdWg3QTZwZFJiRTNSNFZLRC9CZ1F1WG1rUnFqeUt3RkZpSTBCdjJQaEVj"
-"NllJdTRQV25aYVZmWnovSE1Wbkt6R1dSMXFQazgzNkNaMk5MSkFhKzViak9nMFJHeHB1TDZjWXZa"
-"ZHNKTTdqVXBRMFl6SGFJSlJjM0tmd2pEYVRHeTdyeHZHQzlMM250c0l4ZmFnTnZyOEh1MU9HdVcw"
-"RSt2TzhHSFNnSExWeGRuZEVYUDFlQUJlS2F2NWFkYzZKcjVJaHE3UkdscndJREFRQUJNQTBHQ1Nx"
-"R1NJYjNEUUVCQlFVQUE0SUJBUUJWQ0dHY3I1eTNZM2Ntd0hxNjdUVS96Slhqd3RmcFhQRFQyTTUv"
-"YmFUK1ZGQ0s3Z1JQYWJwV3JCdmtodmtKbSt1VE9nQmM5WDdqK1l5aDN6U1IydE84Umx6NHdQZndC"
-"cFdkWllkTmZXMUVZdDZ3Q0F4WlM3RlB5eEJ3cmEzUTczNEYyWUsvdjBUOG14WGhlVWVDYXhheHV6"
-"aG11U2hRTTd4YkYrQUdRdWlBdmdJRUVhZ3VBcUdCOS9GMjhHYnYyNHpVcmxLcktSUGpReWxnR1V6"
-"eXQxVS9tbVBrQ0JCd0ZWWCtlWkY1UjZmdFJDN1ZnaWFLZ3VTYlNyUjVuRjRpUzZXQUVtakdMZ01v"
-"RHhzUU5KM3RSQUJMUGJSTHVIYVUxWjZ2UmRtQ3VMczVrcVFTWThZZXB1bGJaYnRyY3hEQU1BcE5q"
-"SHVSc2M0a0NSZ1VvNlFHVG1zbTwvWDUwOUNlcnRpZmljYXRlPjwvWDUwOURhdGE+PC9LZXlJbmZv"
-"PjwvU2lnbmF0dXJlPjwvc21kOnNpZ25lZE1hcms+");
diff --git a/AusRegCliever/Makefile b/AusRegCliever/Makefile
index 889624a..3ef8e08 100644
--- a/AusRegCliever/Makefile
+++ b/AusRegCliever/Makefile
@@ -16,8 +16,8 @@ Cc=gcc
ifeq ($(LOCATION),DEBIAN_7)
ifneq ($(ARTKENABLED),0)
- ARTKLIB=-L/home/jdaugherty/clients/reg.de/git/ACTK1_0/lib
- ARTKINCL=-I/home/jdaugherty/clients/reg.de/git/ACTK1_0
+ ARTKLIB=-L/home/jdaugherty/clients/greg/git/ACTK1_0/lib
+ ARTKINCL=-I/home/jdaugherty/clients/greg/git/ACTK1_0
endif
endif
@@ -60,11 +60,11 @@ XERCES_LIB = xerces-c
XERCES_INC_DIR = /opt/local/include/xercesc/
endif
-SLIBS= -L/usr/lib $(BOSTLIB) $(LOG4LIB) $(ARTKLIB) -l boost_system -l boost_thread -l log4cpp -l ACTK1_0 -l jsoncpp
+SLIBS= -L/usr/lib $(BOSTLIB) $(LOG4LIB) $(ARTKLIB) -l boost_system -l boost_thread -l log4cpp -l ACTK1_0 -l jsoncpp -l SegFault
DLIBS= -L/usr/lib $(BOSTLIB) $(LOG4LIB) $(ARTKLIB) -l boost_system -l boost_thread -l log4cpp
SINCL= -I include -I /usr/include/log4cpp -I /usr/include/jsoncpp $(BOSINCL)
-CFLAGS= -DCURRENT_DEBUG=1000 -ggdb3 -DARTKENABLED=$(ARTKENABLED) -DAC_MD
+CFLAGS= -DCURRENT_DEBUG=1000 -std=gnu++11 -ggdb3 -rdynamic -DARTKENABLED=$(ARTKENABLED) -DAC_MD -w
#
# ---------- Should not need to change below
diff --git a/AusRegCliever/include/AC_OTE.h b/AusRegCliever/include/AC_OTE.h
index d6dcbe0..ee2fc06 100644
--- a/AusRegCliever/include/AC_OTE.h
+++ b/AusRegCliever/include/AC_OTE.h
@@ -8,220 +8,334 @@
#ifndef REGISTRYOTE_H_
#define REGISTRYOTB_H_
-typedef auto_ptr AC_SESSMGR;
-typedef auto_ptr AC_SESSION;
-
- static AC_SESSMGR ac_mgr;
- static AC_SESSION ac_sess;
-
+ ACTx *inProgress;
int nCases,thisCase;
+ testDescs theseSpecs;
testCases theseCases;
testFuncs theseFuncs;
+ Json::Value theseParms;
+
bool acTkInitialised = false, fatal = false, done = false, transferGainer,
bindError;
- const char *thisName = "registrar.ote";
- string thisRegistry("Unknown"), thatAccount("Unknown"), thisAccount("Unknown"), shitName;
+ const string claims("claims"), dpml("custom"), landrush("landrush"), sunrise("sunrise");
- int cmd=0,debug=1000;
- string op("newInstance");
+ const char *thisName = "registrar.ote", *thisDesc;
- const string claims("claims"), dpml("custom"), landrush("landrush"), sunrise("sunrise");
+ string thisRegistry("Unknown"), thatAccount("Unknown"), thisAccount("Unknown");
- std::string ctc("renjuan");
- std::string ctcPW("Ab9dW@rd");
- std::string ctcEmail("juan@acm.org");
- std::string ctcName("Ren Ren-Juan");
- std::string ctcCity("Niagara Falls");
- std::vector
- ctcCrib(1,"2926 2nd Strt");
- std::string ctcProv("NY");
- std::string ctcPC("14305");
- std::string ctcGuo("US");
- std::string ctcOrg("American Kybernetik");
+ int debug=1000;
- std::string pw("Ab9dW@rd");
- std::string RID("renjuan");
+ commandFrame *ctxt;
- std::vector tech(1,std::string("renjuan") );
- std::vector admin(1,std::string("renjuan") );
- std::vector billing(1,std::string("renjuan") );
- std::vector ns(1,std::string("ns1.google.com") );;
+ inline bool checkAndSetBool(bool &target,const char *jsonName,const bool defaultValue,bool required) {
- const IntPostalInfo ctcPO(ctcName,ctcOrg,
- ctcCrib,ctcCity,ctcProv,ctcPC,ctcGuo);
+ bool value = true;
- LPCrtCmdExtension crtE1( &claims ), crtE2( &dpml );
+ if (!theseParms.isMember(jsonName)) {
+ if (required) {
+ theseLogs->logN(2,"%d - no '%s' boolean field",thisCase+1,jsonName);
+ ACPRODINOTE::bindError = true;
+ value = false;
+ }
+ }
+
+ // TODO: Check bool type
+
+ target = theseParms.get(jsonName,defaultValue).asBool();
+ return value;
+
+ }
+
+ inline bool checkAndSetStr(string &target,const char *jsonName,const char *defaultValue,bool required) {
+
+ bool value = true;
+
+ if (!theseParms.isMember(jsonName)) {
+ if (required) {
+ theseLogs->logN(2,"%d - no '%s' string field",thisCase+1,jsonName);
+ ACPRODINOTE::bindError = true;
+ value = false;
+ }
+ }
+
+ // TODO: Check string type
+
+ target = theseParms.get(jsonName,defaultValue).asString();
+ return value;
+
+ }
inline bool checkNameOK() {
- if (!parms[thisCase].isMember("name")) {
- theseLogs->logN(1,"(%d) no 'name' field",cmd);
+ if (!theseParms.isMember("name")) {
+ theseLogs->logN(1,"%d - no 'name' field",thisCase+1);
ACPRODINOTE::bindError = true;
return false;
}
- shitName = parms[thisCase]["name"].asString();
- thisName = shitName.c_str();
+ ctxt->shitName = theseParms.get("name","noname").asString();
+ thisName = ctxt->shitName.c_str();
return true;
}
inline bool checkContOK() {
- if (!parms[thisCase].isMember("cont_id")) {
- ACPRODINOTE::bindError = true;
- theseLogs->logN(1,"(%d) no 'cont_id' field",cmd);
- return false;
+ bool value = checkAndSetStr(ctxt->ctc,"cont_id","renjuan",true);
- }
+ ctxt->thisDesc = theseSpecs[thisCase].case_desc;
- return true;
+ value = value ? true : checkAndSetStr(ctxt->ctc,"cont_name","renjuan",true);
+ value = value ? true : checkAndSetStr(ctxt->ctcPW,"cont_pw","Ab9dW@rd",true);
+ value = value ? true : checkAndSetStr(ctxt->ctcEmail,"cont_email","juan@acm.org",true);
+ checkAndSetStr(ctxt->ctcName,"cont_name","Ren Ren-Juan",false);
+ checkAndSetStr(ctxt->ctcCity,"cont_city","Niagara Falls",false);
+ checkAndSetStr(ctxt->ctcProv,"cont_province","NY",false);
+ checkAndSetStr(ctxt->ctcPC,"cont_postal_code","14305",false);
+ checkAndSetStr(ctxt->ctcGuo,"cont_guo","US",false);
+ checkAndSetStr(ctxt->ctcOrg,"cont_org","American Kybernetik",false);
+ return value;
}
- inline bool checkPWDOK(Json::Value thisPW) {
+ inline bool checkPWDOK() {
- if (!parms[thisCase].isMember("cont_id")) {
- ACPRODINOTE::bindError = true;
- theseLogs->logN(1,"(%d) no 'cont_pw' field",cmd);
- return false;
-
- }
-
- return true;
-
- }
-
- void check() {
-
-
- if (checkNameOK()) {
-
- DomainCheckCommand *c = new DomainCheckCommand(thisName);
- DomainCheckResponse *r = new DomainCheckResponse();
-
- theseLogs->logN(2,"(%d) Queue Unextended check of %s",cmd++,thisName);
- acq.push( new Transaction(c, r) );
-
- }
+ return checkAndSetStr(ctxt->pw,"cont_pw","Ab9dW@rd",true);
}
- void checkClaims() {
+ inline bool checkPhaseOK() {
-
- if (checkNameOK()) {
-
- DomainCheckCommand *c = new DomainCheckCommand(thisName);
- LPChkCmdExtension chkE(&claims);
- c->appendExtension(chkE);
- DomainCheckResponse *r = new DomainCheckResponse();
- LPChkRespExtension chkRspE;
- r->registerExtension(&chkRspE);
-
- theseLogs->logN(2,"(%d) Queue Claims type Check of %s",cmd++,thisName);
- acq.push(new Transaction(c, r));
-
- }
+ return checkAndSetStr(ctxt->thisLaunchPhase,"launch_phase","sunrise",true);
}
- void create() {
+ inline bool checkSMD() {
+
+#define MAX_SMD_SIZE (64*1024)
+
+ bool value = checkAndSetStr(ctxt->smdFileName,"smd_data","",true);
+
+ if (value) { string fullPath = ctxt->smdPath + theseParms.get("smd_data","").asString();
+
+ if( access( fullPath.c_str(), R_OK ) != -1 ) {struct stat st; int result,size; char *buffer;
+ stat(fullPath.c_str(), &st);
+ size = st.st_size;
+ if (!size || size > MAX_SMD_SIZE) {
+ theseLogs->logN(2,"%d - '%s' zero size or too big ",thisCase+1,fullPath.c_str() );
+ value = false;
+ goto done;
+ }
+ FILE *file;
+ buffer = (char *)malloc(size);
+ if (file = fopen(fullPath.c_str(), "r"))
+ {result = fread (buffer,1,size,file);
+ fclose(file);
+ if (result != size)
+ {theseLogs->logN(2,"%d - error reading '%s' ",thisCase+1,fullPath.c_str() ); value = false;}
+ else ctxt->smdData = string(buffer);
+ }
+ theseLogs->logN(3,"%d - %d bytes SMD data read from '%s' ",thisCase+1,size,fullPath.c_str() );
+ } else {
+ value = false;
+ theseLogs->logN(2,"%d - can't read SMD data from '%s' ",thisCase+1,fullPath.c_str() );
+ }
+ }
+
+ done: return value;
+ }
+
+ inline void newCommandFrame() {
+
+ ctxt = new commandFrame();
+
+ ctxt->ctcOrg = string("American Kybernetik");
+ ctxt->ctcProv = string("NY");
+ ctxt->ctcPC = string("14305");
+
+ ctxt->thisDesc = theseSpecs[thisCase].case_desc;
+ thisDesc = ctxt->thisDesc.c_str();
+
+ if (!theseParms.isMember("dryrun")) { // TODO: Check bool type
+ ctxt->thisDryRun = theseParms.get("dryrun",false).asBool();
+ theseLogs->logN(0," ... this case disabled transactioning");
+ }
+
+ }
+
+
+ void check() { newCommandFrame();
+
+ if (checkNameOK()) {
+
+ TxQ *txq;
+ txq = new TxQ
+ (thisName,thisDesc);
+
+ txq->set(ctxt,theseSpecs[thisCase].case_name.c_str());
+ theseLogs->logN(2,"%d .. Queue Unextended IETF Standard check of %s",thisCase+1,thisName);
+ acq.push( txq );
+
+ }
+ }
+
+ void finishCase02() {
+
+ TxQ *txq;
+ txq = (TxQ*) inProgress;
+
+ LPChkRespExtension *lpce = (LPChkRespExtension *)txq->ce;
+
+ theseLogs->logN(2," Claims %s exist for %s.",
+ (lpce->doClaimsExist() ? "do" : " do not "), txq->ctx->shitName.c_str());
+ if (lpce->doClaimsExist())
+ theseLogs->logN(2," claim: %s .",lpce->getClaimsKey());
+
+ }
+
+ void checkClaims() { newCommandFrame();
+
+ if (checkNameOK()) {
+
+ TxQ *txq;
+ txq = new TxQ
+ (&claims, thisName, thisDesc);
+ txq->c->appendExtension(*txq->ce);
+ txq->r->registerExtension(txq->re);
+
+ txq->set(ctxt,theseSpecs[thisCase].case_name.c_str());
+ txq->finisher = finishCase02;
+ theseLogs->logN(2,"%d .. Queue Claims type Check of %s",thisCase+1,thisName);
+ acq.push(txq);
+
+ }
+ }
+
+ void create() { newCommandFrame();
if (checkNameOK() && checkContOK())
{
+ TxQ *txq;
+ txq = new TxQ
+ ( ctxt->shitName, ctxt->pw, &ctxt->RID );
- DomainCreateCommand *c = new DomainCreateCommand(shitName,pw,&RID, &tech, &ns, &admin, &billing);
- DomainCreateResponse *r = new DomainCreateResponse();
+ txq->set(ctxt,theseSpecs[thisCase].case_name.c_str());
+ theseLogs->logN(3,"%d .. Queue default create of %s ( %s ).",thisCase+1, thisName, thisAccount.c_str());
+ acq.push(txq);
- theseLogs->logN(3,"(%d) Queue normal create of %s ( %s ).",cmd++, thisName, thisAccount.c_str());
- acq.push(new Transaction(c, r));
-
- }
+ }
}
- string noticeID("d85159710000000000000008692"),
- notAfter("2015-01-01T12:00:00Z"), acceptedDate("2014-01-27T19:00:00Z");
- void createClaimOverride() {
+ void createClaimOverride() { newCommandFrame();
- if (checkNameOK()) {
+ if (checkNameOK() && checkPhaseOK()
+ && checkAndSetStr(ctxt->noticeID,"noticeID","d85159710000000000000008692",true)
+ && checkAndSetStr(ctxt->notAfter,"notAfter","2015-01-01T12:00:00Z",true)
+ && checkAndSetStr(ctxt->acceptedDate,"acceptedDate","2014-01-27T19:00:00Z",true) )
+ {
- DomainCreateCommand *c = new DomainCreateCommand(thisName,pw,&RID, &tech, &ns, &admin, &billing);
- crtE1.setNoticeID(noticeID, notAfter, acceptedDate);
- c->appendExtension(crtE1);
- DomainCreateResponse *r;
+ TxQ *txq;
+ txq = new TxQ
+ (ctxt->shitName, ctxt->pw, &ctxt->RID, &ctxt->tech, &ctxt->ns, &ctxt->admin, &ctxt->billing, NULL, &ctxt->thisLaunchPhase);
- theseLogs->logN(2,"(%d) Queue create %s w Notice ID test data (TCN).",++cmd,thisName);
- acq.push(new Transaction(c, r));
+ txq->ce->setNoticeID(ctxt->noticeID, ctxt->notAfter, ctxt->acceptedDate);
+ txq->c->appendExtension(*txq->ce);
+
+ txq->set(ctxt,theseSpecs[thisCase].case_name.c_str());
+ theseLogs->logN(2,"%d .. Queue create %s w Notice ID test data (TCN).",thisCase+1,thisName);
+ acq.push(txq);
}
}
- void createContact() {
+ void createContact() { newCommandFrame();
- ContactCreateCommand *c = new ContactCreateCommand(ctc,ctcPW,&ctcPO,ctcEmail);
- ContactCreateResponse *r = new ContactCreateResponse();
+ if (checkContOK() ) {
- theseLogs->logN(2,"(%d) Queue create contact %s.",++cmd,ctc.c_str());
- acq.push(new Transaction(c, r));
+ TxQ *txq;
+ txq = new TxQ
+ (ctxt->ctc,ctxt->ctcPW,&ctxt->ctcPO,ctxt->ctcEmail);
+
+ txq->set(ctxt,theseSpecs[thisCase].case_name.c_str());
+ theseLogs->logN(2,"%d .. Queue create contact %s.",thisCase+1, ctxt->ctc.c_str());
+ acq.push(txq);
+
+ }
}
- void dpmlCreate() {
+ void dpmlCreate() { newCommandFrame();
+ if (checkNameOK() && checkPhaseOK() && checkSMD()) {
- if (checkNameOK()) {
+ TxQ *txq;
+ txq = new TxQ
+ (ctxt->shitName, ctxt->pw, ctxt->RID, ctxt->tech, ctxt->ns, ctxt->admin, ctxt->billing);
- DomainCreateCommand *c = new DomainCreateCommand(thisName,pw,&RID, &tech, &ns, &admin, &billing);
- crtE2.setSMD();
- c->appendExtension(crtE2);
- DomainCreateResponse *r = new DomainCreateResponse();
+ txq->ce->setSMD(ctxt->smdData);
+ txq->c->appendExtension(*txq->ce);
- theseLogs->logN(2,"(%d) Queue DPML block create %s w boitedetest.smd data.",++cmd,thisName);
- acq.push(new Transaction(c, r));
+ txq->set(ctxt,theseSpecs[thisCase].case_name.c_str());
+ theseLogs->logN(2,"(%d) Queue DPML block create %s w boitedetest.smd data.",thisCase+1,thisName);
+ acq.push(txq);
}
}
- void sunriseCreate() {
+ void sunriseCreate() { newCommandFrame();
- if (checkNameOK()) {
+ if (checkNameOK() && checkPhaseOK() && checkSMD()) {
- DomainCreateCommand *c = new DomainCreateCommand(thisName,pw,&RID, &tech, &ns, &admin, &billing);
- c->appendExtension(crtE1);
- DomainCreateResponse *r = new DomainCreateResponse();
+ TxQ *txq;
+ txq = new TxQ
+ (ctxt->shitName, ctxt->pw, &ctxt->RID, &ctxt->tech, &ctxt->ns, &ctxt->admin, &ctxt->billing, NULL, &ctxt->thisLaunchPhase);
- theseLogs->logN(2,"(%d) Queue Sunrise create %s with ICANN SMD test data.",++cmd,thisName);
- acq.push(new Transaction(c, r));
+ txq->ce->setSMD(ctxt->smdData);
+ txq->c->appendExtension(*txq->ce);
+
+ txq->set(ctxt,theseSpecs[thisCase].case_name.c_str());
+ theseLogs->logN(2,"%d .. Queue Sunrise create %s with ICANN SMD test data.",thisCase+1,thisName);
+ acq.push(txq);
}
}
- void transfer() {
+ void transfer() { newCommandFrame();
- if (checkNameOK()) {
+ if (checkNameOK() && checkAndSetBool(transferGainer,"isGainer",true,true)) {
- Transaction *thisTest;
+ if (transferGainer) {
- DomainTransferRequestCommand *c0 = new DomainTransferRequestCommand(thisName,ctcPW);
- DomainTransferApproveCommand *c1 = new DomainTransferApproveCommand(thisName,ctcPW);
- DomainTransferResponse *r = new DomainTransferResponse();
+ TxQ *txq;
+ txq = new TxQ
+ (ctxt->shitName,ctxt->pw,thisDesc);
- thisTest = transferGainer ? new Transaction(c0, r) : new Transaction(c1, r) ;
+ txq->set(ctxt,theseSpecs[thisCase].case_name.c_str());
+ theseLogs->logN(4,"%d .. Queue %s %s -> %s.", (transferGainer ? "Request" : "Approve") ,thisCase+1,
+ ctxt->shitName.c_str(),thatAccount.c_str(),thisAccount.c_str());
+ acq.push(txq);
- theseLogs->logN(4,"(%d) Queue %s %s -> %s.", (transferGainer ? "Request" : "Approve") ,cmd++,
- thisName,thatAccount.c_str());
+ } else {
- acq.push(thisTest);
+ TxQ < DomainTransferApproveCommand , DomainTransferResponse, CommandExtension, ResponseExtension > *txq;
+ txq = new TxQ< DomainTransferApproveCommand , DomainTransferResponse, CommandExtension, ResponseExtension >
+ (ctxt->shitName,ctxt->pw,thisDesc);
+
+ txq->set(ctxt,theseSpecs[thisCase].case_name.c_str());
+ theseLogs->logN(4,"%d .. Queue %s %s -> %s.", thisCase+1, (transferGainer ? "Request" : "Approve") ,
+ ctxt->shitName.c_str(),thisAccount.c_str() ,thatAccount.c_str());
+ acq.push(txq);
+
+ }
}
@@ -237,8 +351,7 @@ typedef auto_ptr AC_SESSION;
theseFuncs["case05"] = createClaimOverride;
theseFuncs["case06"] = transfer;
- theseLogs->logN(0,"7 test case backends available for scripting");
-
+ theseLogs->logN(1,"%d test case backends available for scripting",theseFuncs.size());
}
diff --git a/AusRegCliever/include/donutsOTEB.h b/AusRegCliever/include/donutsOTEB.h
index 7ae46ee..177f9cf 100644
--- a/AusRegCliever/include/donutsOTEB.h
+++ b/AusRegCliever/include/donutsOTEB.h
@@ -8,6 +8,87 @@
#ifndef DONUTSOTEB_H_
#define DONUTSOTEB_H_
+const char *name1 = "yoda.guru";
+const char *name2 = "unicycles.bike";
+const char *name3 = "test-validate.claimsgasix";
+const char *name4 = "horny.singles";
+const char *name5 = "atmospheric.lighting";
+const char *name6 = "mushroomtheory.management";
+
+static const string smdData(
+"DQo8c21kOnNpZ25lZE1hcmsgeG1sbnM6c21kPSJ1cm46aWV0ZjpwYXJhbXM6eG1sOm5zOnNpZ25l"
+"ZE1hcmstMS4wIiBpZD0iX3NpZ25lZE1hcmsiPjxzbWQ6aWQ+MS0yPC9zbWQ6aWQ+DQogIDwhLS0g"
+"aW5zZXJ0IHNtZDppZCAtLT4NCiAgPHNtZDppc3N1ZXJJbmZvIGlzc3VlcklEPSIyIj4NCiAgICA8"
+"c21kOm9yZz5FeGFtcGxlIEluYy48L3NtZDpvcmc+DQogICAgPHNtZDplbWFpbD5zdXBwb3J0QGV4"
+"YW1wbGUudGxkPC9zbWQ6ZW1haWw+DQogICAgPHNtZDp1cmw+aHR0cDovL3d3dy5leGFtcGxlLnRs"
+"ZDwvc21kOnVybD4NCiAgICA8c21kOnZvaWNlIHg9IjEyMzQiPisxLjcwMzU1NTU1NTU8L3NtZDp2"
+"b2ljZT4NCiAgPC9zbWQ6aXNzdWVySW5mbz48c21kOm5vdEJlZm9yZT4yMDA5LTA4LTE2VDA5OjAw"
+"OjAwLjBaPC9zbWQ6bm90QmVmb3JlPjxzbWQ6bm90QWZ0ZXI+MjA5OS0wOC0xNlQwOTowMDowMC4w"
+"Wjwvc21kOm5vdEFmdGVyPg0KICA8IS0tIGluc2VydCBzbWQ6bm90QmVmb3JlIC0tPg0KICA8IS0t"
+"IGluc2VydCBzbWQ6bm90QWZ0ZXIgLS0+DQogIDxtYXJrOm1hcmsgeG1sbnM6bWFyaz0idXJuOmll"
+"dGY6cGFyYW1zOnhtbDpuczptYXJrLTEuMCI+DQogICAgPG1hcms6dHJhZGVtYXJrPg0KICAgICAg"
+"PG1hcms6aWQ+MTIzNC0yPC9tYXJrOmlkPjxtYXJrOm1hcmtOYW1lPmJvw650ZSBkZSB0ZXN0PC9t"
+"YXJrOm1hcmtOYW1lPg0KICAgICAgPCEtLSBpbnNlcnQgbWFyazptYXJrTmFtZSAtLT4NCiAgICAg"
+"IDxtYXJrOmhvbGRlciBlbnRpdGxlbWVudD0ib3duZXIiPg0KICAgICAgICA8bWFyazpvcmc+RXhh"
+"bXBsZSBJbmMuPC9tYXJrOm9yZz4NCiAgICAgICAgPG1hcms6YWRkcj4NCiAgICAgICAgICA8bWFy"
+"azpzdHJlZXQ+MTIzIEV4YW1wbGUgRHIuPC9tYXJrOnN0cmVldD4NCiAgICAgICAgICA8bWFyazpz"
+"dHJlZXQ+U3VpdGUgMTAwPC9tYXJrOnN0cmVldD4NCiAgICAgICAgICA8bWFyazpjaXR5PlJlc3Rv"
+"bjwvbWFyazpjaXR5Pg0KICAgICAgICAgIDxtYXJrOnNwPlZBPC9tYXJrOnNwPg0KICAgICAgICAg"
+"IDxtYXJrOnBjPjIwMTkwPC9tYXJrOnBjPg0KICAgICAgICAgIDxtYXJrOmNjPlVTPC9tYXJrOmNj"
+"Pg0KICAgICAgICA8L21hcms6YWRkcj4NCiAgICAgIDwvbWFyazpob2xkZXI+DQogICAgICA8bWFy"
+"azpqdXJpc2RpY3Rpb24+VVM8L21hcms6anVyaXNkaWN0aW9uPg0KICAgICAgPG1hcms6Y2xhc3M+"
+"MzU8L21hcms6Y2xhc3M+DQogICAgICA8bWFyazpjbGFzcz4zNjwvbWFyazpjbGFzcz48bWFyazps"
+"YWJlbD5ib2l0ZWRldGVzdDwvbWFyazpsYWJlbD48bWFyazpsYWJlbD5ib2l0ZWRlLXRlc3Q8L21h"
+"cms6bGFiZWw+PG1hcms6bGFiZWw+Ym9pdGUtZGUtdGVzdDwvbWFyazpsYWJlbD4NCiAgICAgIDwh"
+"LS0gaW5zZXJ0IG1hcms6bGFiZWwgLS0+DQogICAgICA8bWFyazpnb29kc0FuZFNlcnZpY2VzPg0K"
+"ICAgICAgICBEaXJpZ2VuZGFzIGV0IGVpdXNtb2RpDQogICAgICAgIGZlYXR1cmluZyBpbmZyaW5n"
+"byBpbiBhaXJmYXJlIGV0IGNhcnRhbSBzZXJ2aWNpYS4NCiAgICAgIDwvbWFyazpnb29kc0FuZFNl"
+"cnZpY2VzPg0KICAgICAgPG1hcms6cmVnTnVtPjIzNDIzNTwvbWFyazpyZWdOdW0+DQogICAgICA8"
+"bWFyazpyZWdEYXRlPjIwMDktMDgtMTZUMDk6MDA6MDAuMFo8L21hcms6cmVnRGF0ZT4NCiAgICAg"
+"IDxtYXJrOmV4RGF0ZT4yMDk5LTA4LTE2VDA5OjAwOjAwLjBaPC9tYXJrOmV4RGF0ZT4NCiAgICA8"
+"L21hcms6dHJhZGVtYXJrPg0KICA8L21hcms6bWFyaz4NCjxTaWduYXR1cmUgeG1sbnM9Imh0dHA6"
+"Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxTaWduZWRJbmZvPjxDYW5vbmljYWxpemF0"
+"aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMx"
+"NG4jIiAvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAx"
+"LzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2IiAvPjxSZWZlcmVuY2UgVVJJPSIjX3NpZ25lZE1h"
+"cmsiPjxUcmFuc2Zvcm1zPjxUcmFuc2Zvcm0gQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8y"
+"MDAwLzA5L3htbGRzaWcjZW52ZWxvcGVkLXNpZ25hdHVyZSIgLz48VHJhbnNmb3JtIEFsZ29yaXRo"
+"bT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiAvPjwvVHJhbnNmb3Jt"
+"cz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxl"
+"bmMjc2hhMjU2IiAvPjxEaWdlc3RWYWx1ZT5CK2R6NWtzdno4K3FQbFMzUE8rKy93UnYxdEFRU1VE"
+"NkhjaFZPTzkyN2FFPTwvRGlnZXN0VmFsdWU+PC9SZWZlcmVuY2U+PC9TaWduZWRJbmZvPjxTaWdu"
+"YXR1cmVWYWx1ZT5VZ3VJQm5oRElRQXNqUTlkTkFRcXVDR3h5Q2o3UTlYV3FxSHdDa2xKZHpkMi9H"
+"bDB2UHVwb282aFV4cUprU3lPbjI5OTZlQ1Z5NjQ0c3AvQVFISzl2N1VFRGJWcmp4WFlPT2JuVUQ1"
+"RUlLMEcxbnM0UEh5MkhBSjNiVlNPL1JuVG4rU25KV1o1d0hSWHg2ZjhLd0pIUThVUHg0R3Q5SVZy"
+"elRHQ0NwSkduMkU1djFTbjlTTXFDcWY4M1ZiMkxFellQbTg2Zkw4NUNwZmNFK2t0YnNsZHFmZno0"
+"RXMyU2lobG9vY1BtaEJIeTg0eVNUS05MVWtmcXI4ZXk1YU1QeThHb2ErMXVHM1UwS2g0Zk5nZGdL"
+"RmZUZnhBUHN0RCtYTzEwQTB3OCtxQnRQZFFwcVgwQVZKbUNSR04vRk52UWNCb0RvV1U5K2FsSEtq"
+"c29sNXZRTDc0QWc9PTwvU2lnbmF0dXJlVmFsdWU+PEtleUluZm8+PFg1MDlEYXRhPjxYNTA5Q2Vy"
+"dGlmaWNhdGU+TUlJRHNEQ0NBcGdDQVFFd0RRWUpLb1pJaHZjTkFRRUZCUUF3Z2FFeEN6QUpCZ05W"
+"QkFZVEFsVlRNUk13RVFZRFZRUUlEQXBYWVhOb2FXNW5kRzl1TVJFd0R3WURWUVFIREFoQ1pXeHNa"
+"WFoxWlRFUE1BMEdBMVVFQ2d3R1JHOXVkWFJ6TVEwd0N3WURWUVFMREFSVVpYTjBNU1V3SXdZRFZR"
+"UUREQngwYldOb2RHVnpkSEp2YjNSalpYSjBNUzF2ZEdVdFpHOXVkWFJ6TVNNd0lRWUpLb1pJaHZj"
+"TkFRa0JGaFJvYjNOMGJXRnpkR1Z5UUdSdmJuVjBjeTVqYnpBZUZ3MHhNekEzTVRBd05qUTNNelJh"
+"RncweU16QTNNRGd3TmpRM016UmFNSUdaTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNBd0tW"
+"MkZ6YUdsdVozUnZiakVSTUE4R0ExVUVCd3dJUW1Wc2JHVjJkV1V4RHpBTkJnTlZCQW9NQmtSdmJu"
+"VjBjekVOTUFzR0ExVUVDd3dFVkdWemRERWRNQnNHQTFVRUF3d1VjMjFrWTJWeWRERXhMVzkwWlMx"
+"a2IyNTFkSE14SXpBaEJna3Foa2lHOXcwQkNRRVdGR2h2YzNSdFlYTjBaWEpBWkc5dWRYUnpMbU52"
+"TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF3dEhkdmRtMTFJaVM5"
+"aG02RkM1QlNKNmdEM2kxRGx1S2QyU0dpYWdjOU5WZmFKSW95RlhENlRzMjR5cDdIWHFrcitrMGdq"
+"RjF3Tng5R0MrTkV5N0h6Vmo1TFNQQ0p0NEFobEZKWjlVbnVjYWRyWm55bVhuUWZwK2xRSXkyaEor"
+"c3UxbTN4c3NXemdRYjgwdWg3QTZwZFJiRTNSNFZLRC9CZ1F1WG1rUnFqeUt3RkZpSTBCdjJQaEVj"
+"NllJdTRQV25aYVZmWnovSE1Wbkt6R1dSMXFQazgzNkNaMk5MSkFhKzViak9nMFJHeHB1TDZjWXZa"
+"ZHNKTTdqVXBRMFl6SGFJSlJjM0tmd2pEYVRHeTdyeHZHQzlMM250c0l4ZmFnTnZyOEh1MU9HdVcw"
+"RSt2TzhHSFNnSExWeGRuZEVYUDFlQUJlS2F2NWFkYzZKcjVJaHE3UkdscndJREFRQUJNQTBHQ1Nx"
+"R1NJYjNEUUVCQlFVQUE0SUJBUUJWQ0dHY3I1eTNZM2Ntd0hxNjdUVS96Slhqd3RmcFhQRFQyTTUv"
+"YmFUK1ZGQ0s3Z1JQYWJwV3JCdmtodmtKbSt1VE9nQmM5WDdqK1l5aDN6U1IydE84Umx6NHdQZndC"
+"cFdkWllkTmZXMUVZdDZ3Q0F4WlM3RlB5eEJ3cmEzUTczNEYyWUsvdjBUOG14WGhlVWVDYXhheHV6"
+"aG11U2hRTTd4YkYrQUdRdWlBdmdJRUVhZ3VBcUdCOS9GMjhHYnYyNHpVcmxLcktSUGpReWxnR1V6"
+"eXQxVS9tbVBrQ0JCd0ZWWCtlWkY1UjZmdFJDN1ZnaWFLZ3VTYlNyUjVuRjRpUzZXQUVtakdMZ01v"
+"RHhzUU5KM3RSQUJMUGJSTHVIYVUxWjZ2UmRtQ3VMczVrcVFTWThZZXB1bGJaYnRyY3hEQU1BcE5q"
+"SHVSc2M0a0NSZ1VvNlFHVG1zbTwvWDUwOUNlcnRpZmljYXRlPjwvWDUwOURhdGE+PC9LZXlJbmZv"
+"PjwvU2lnbmF0dXJlPjwvc21kOnNpZ25lZE1hcms+");
+
void ausRegEPPTK::doOTEB()
{
bool addDomains = false, debug=true, contactCreated = true, doTransfers = false,
@@ -15,8 +96,8 @@ void ausRegEPPTK::doOTEB()
int cmd=0;
const char *thatAccount="secura2-ote2", *thisAccount="secura1-ote";
- string op("newInstance");
- const string claims("claims"), dpml("custom"), landrush("landrush"), sunrise("sunrise");
+ string op("newInstance");
+ const string claims("claims"), dpml("custom"), landrush("landrush"), sunrise("sunrise");
LPCrtCmdExtension crtE1( &claims ), crtE2( &dpml );
@@ -275,7 +356,7 @@ void ausRegEPPTK::doOTEB()
theseLogs->logN(2,"(%d) Create %s w ICANN SMD file.",++cmd,dpmlName.c_str());
DomainCreateCommand oteCommand_7(dpmlName,pw,&RID, &tech, &ns, &admin, &billing);
- crtE2.setSMD();
+ crtE2.setSMD(smdData);
oteCommand_7.appendExtension(crtE2);
DomainCreateResponse oteResponse_7;
diff --git a/AusRegCliever/include/mdJSON.hpp b/AusRegCliever/include/mdJSON.hpp
index 1d9392c..923df8e 100644
--- a/AusRegCliever/include/mdJSON.hpp
+++ b/AusRegCliever/include/mdJSON.hpp
@@ -11,16 +11,22 @@
typedef void (*caseBody)(void);
typedef struct {
- string desc;
+ string *desc;
const char *caseName;
caseBody fBody;
- int parms; // Index of JSON Value in testSuite00
+ int parms; // Index of JSON Value in testSuiteAC
} testCase;
+ typedef struct {
+ string case_name;
+ string case_desc;
+ } testDesc;
+
namespace ACPRODINOTE {
- typedef std::map testCases;
- typedef std::map testFuncs;
+ typedef std::map testDescs;
+ typedef std::map testCases;
+ typedef std::map testFuncs;
}
diff --git a/AusRegCliever/include/mdcommon.h b/AusRegCliever/include/mdcommon.h
index 5b4d82e..abcb70e 100644
--- a/AusRegCliever/include/mdcommon.h
+++ b/AusRegCliever/include/mdcommon.h
@@ -52,6 +52,13 @@
*
*/
+
+#ifndef AC_ASSERTION
+#define AC_ASSERTION
+#define AC_ASSERTIONS(P) {if (!P) { theseLogs.logN(2,"AC ASSERT: %s %d",__FILE__,__LINE__); raise(SIGINT);}}
+#define AC_ASSERTIONP(P) {if (!P) {theseLogs->logN(2,"AC ASSERT: %s %d",__FILE__,__LINE__); raise(SIGINT);}}
+#endif
+
#ifndef MD_COMMON
#define MD_COMMON
#define ACTK_CFG_PATH "./etc/toolkit2.conf"
diff --git a/AusRegCliever/server/cliever-md.cpp b/AusRegCliever/server/cliever-md.cpp
index 6890fa5..9c30de8 100644
--- a/AusRegCliever/server/cliever-md.cpp
+++ b/AusRegCliever/server/cliever-md.cpp
@@ -169,6 +169,9 @@ void setSignals() {
signal(SIGTSTP,SIG_IGN); /* ignore tty signals */
signal(SIGTTOU,SIG_IGN); // both input
signal(SIGTTIN,SIG_IGN); // and output
+#ifdef AC_ASSERTIONS
+ signal(SIGINT, signal_handler); // debug
+#endif
signal(SIGSEGV,signal_handler);
signal(SIGUSR1,signal_handler); // commander log messages
signal(SIGUSR2,signal_handler); // reserved
@@ -182,6 +185,7 @@ void signal_handler(int sig)
switch(sig) {
case SIGSEGV:
theseLogs->logN(0,"SEGV ABEND.");
+ case SIGINT:
if (waitForGDB) {
for (i = 0;
i < iSaidWaitBiatch;
diff --git a/AusRegCliever/server/mdAusReg.cpp b/AusRegCliever/server/mdAusReg.cpp
index 8b7776d..f76c308 100644
--- a/AusRegCliever/server/mdAusReg.cpp
+++ b/AusRegCliever/server/mdAusReg.cpp
@@ -24,17 +24,214 @@
#include
#include
#include
+#include
#include
+#include
+#include
+#include
#include "mdJSON.hpp"
- Json::Value parms[MAX_OTE_CASE];
- bool JSONBatchInProgress = false;
+ typedef struct CMDFRAME { bool thisDryRun;
-namespace ACPRODINOTE {
+ std::string ctc;
+ std::string ctcPW;
+ std::string ctcEmail;
+ std::string ctcName;
+ std::string ctcCity;
+ std::vector
+ ctcCrib;
+ std::string ctcProv;
+ std::string ctcPC;
+ std::string ctcGuo;
+ std::string ctcOrg;
-typedef boost::heap::priority_queue ACWQ;
+ std::string pw;
+ std::string RID;
- ACWQ acq;
+ std::vector admin;
+ std::vector billing;
+ std::vector ns;
+ std::vector tech;
+
+ const IntPostalInfo ctcPO;
+
+ string noticeID, notAfter, acceptedDate , thisLaunchPhase, thisDesc, shitName ; // i mean string name
+ string smdFileName, smdPath, smdData;
+
+ CMDFRAME() : ctcPO(IntPostalInfo(std::string("Ren Ren-Juan"),std::string("Niagara Falls"),std::string("US"))) {
+ thisDryRun=false; smdPath = "./smd/";}
+ }
+ commandFrame;
+
+
+ const char *parms[MAX_OTE_CASE];
+
+ bool bindDone,JSONBatchInProgress = false;
+
+ static TestEnvironment props;
+
+ static std::string TEST_SE =
+ "";
+
+ static std::string nil("nil");
+
+ namespace ACPRODINOTE {
+
+ bool dryRun;
+ typedef auto_ptr AC_SESSMGR;
+ typedef auto_ptr AC_SESSION;
+
+ static AC_SESSION ac_sess;
+
+ class ACTx
+ {
+ const char *m;
+ AC_SESSMGR ac_mgr;
+
+ public:
+ commandFrame *ctx;
+ void (*finisher)(void);
+ Transaction *tx;
+ // void setSess(std::auto_ptr& sp) {mgr = sp;}
+ ACTx(const char *msg)
+ {m=msg;
+ finisher = NULL;
+ }
+ void setSession(AC_SESSMGR p) { ac_mgr = p; }
+ void setm(const char *toWhat) { m = toWhat; }
+ ACTx(){tx = NULL;finisher =NULL;m=NULL;ctx=NULL;}
+ virtual void doIt() {
+ AC_ASSERTIONP((tx && ctx))
+ theseLogs->logN(1,"{ %s",m ? m : "");
+ theseLogs->logN(1," '%s'",ctx->thisDesc.c_str());
+ if (!dryRun && !ctx->thisDryRun)
+ ac_mgr->execute(*tx);
+ if (finisher)
+ finisher();
+ delete tx;
+ delete ctx;
+ theseLogs->logN(0,"}");
+ }
+ };
+
+ template
+ class TxQ : public ACTx {
+ private:
+ std::string name;
+ public:
+ CT *c; RT *r; CET *ce; RET *re;
+ TxQ(const char *msg) : ACTx(msg) {
+ c = new CT();
+ r = new RT();
+ ce = new CET();
+ re = new RET();
+ finisher = NULL;
+ }
+ TxQ(std::string ctc,std::string ctcpw, const PostalInfo *poi,
+ std::string cemail) : ACTx("") {
+ c = new CT(ctc, ctcpw, poi, cemail );
+ r = new RT();
+ ce = NULL;
+ re = NULL;
+ finisher = NULL;
+ }
+ TxQ(const std::string& nom,
+ const std::string& pw,
+ const std::string* registrantID,
+ const std::vector* techContacts = NULL,
+ const std::vector* nameservers = NULL,
+ const std::vector* adminContacts = NULL,
+ const std::vector* billingContacts = NULL,
+ const Period* period = NULL) : ACTx("default create") {
+ name = string(nom);
+ c = new CT(nom,pw,registrantID);
+ r = new RT();
+ ce = NULL;
+ re = NULL;
+ finisher = NULL;
+ }
+ TxQ(const char *nom,const char *msg) : ACTx(msg) {
+ name = string(nom);
+ c = new CT(name);
+ r = new RT();
+ ce = NULL;
+ re = NULL;
+ setm(msg);
+ finisher = NULL;
+ }
+ TxQ(const std::string nom,const std::string pw,const char *msg) : ACTx(msg) {
+ name = nom;
+ c = new CT(name,pw);
+ r = new RT();
+ ce = NULL;
+ re = NULL;
+ finisher = NULL;
+ }
+ TxQ(const std::string nom,const char *msg) : ACTx(msg) {
+ name = nom;
+ c = new CT(name);
+ r = new RT();
+ ce = NULL;
+ re = NULL;
+ finisher = NULL;
+ }
+ TxQ(const std::string *lpe,const char *nom,const char *msg) : ACTx(msg) {
+ name = string(nom);
+ c = new CT(name);
+ r = new RT();
+ ce = new CET(lpe);
+ re = NULL;
+ finisher = NULL;
+ }
+ TxQ (const std::string& nom,
+ const std::string& pw,
+ const std::string* registrantID,
+ const std::vector* techContacts,
+ const std::vector* nameservers,
+ const std::vector* adminContacts,
+ const std::vector* billingContacts,
+ const Period*,
+ const std::string* lpe) : ACTx("create ") {
+ name = nom;
+ c = new CT(nom,pw,registrantID,techContacts,nameservers,adminContacts,billingContacts);
+ r = new RT();
+ ce = new CET(lpe);
+ re = NULL;
+ finisher = NULL;
+ }
+ TxQ(const std::string &name,const std::string pw, const std::string &RID,
+ std::vector&tech, std::vector&ns, std::vector&admin, std::vector&billing) {}
+ TxQ(CT *c1, RT *r1, CET *ce1, RET *re1, const char *msg)
+ : c(c1), r(r1), ce(ce1), re(re1), ACTx(msg) {}
+ void operator=(TxQ *t2) {c = t2->c; r = t2->r; ce = t2->ce; re = t2->re; }
+ ~TxQ() {delete c; delete r; if (ce) delete ce; if (re) delete re;}
+ Transaction operator=(Transaction &t) {t = Transaction(c,r);}
+ void set(commandFrame *cmdF,const char *casebe="unknown backend") {
+ // Guard the transaction. The Boost stuff is compile-time/static, the AC fail-safe.
+ finisher = NULL;
+ ctx = cmdF;
+ setm(casebe);
+ BOOST_STATIC_ASSERT( (boost::is_base_of::value) );
+ BOOST_STATIC_ASSERT( (boost::is_base_of::value) );
+ BOOST_STATIC_ASSERT( (boost::is_base_of::value) );
+ BOOST_STATIC_ASSERT( (boost::is_base_of::value) );
+ bool p1 = std::is_base_of::value;
+ bool p2 = std::is_base_of::value;
+ bool p3 = ce == NULL ? false : std::is_base_of::value;
+ bool p4 = re == NULL ? false : std::is_base_of::value;
+ AC_ASSERTIONP(p1)
+ AC_ASSERTIONP(p2)
+ if (ce)
+ AC_ASSERTIONP(p3)
+ if (re)
+ AC_ASSERTIONP(p4)
+ ACTx::tx = new Transaction(c,r);}
+ };
+
+
+ typedef boost::heap::priority_queue ACWQ;
+
+ ACWQ acq;
using namespace std;
@@ -43,23 +240,6 @@ using namespace std;
#define EVENT_SIZE ( sizeof (struct inotify_event) )
#define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) )
-//char *name1 = "bestever.camera"; //
-//char *name3 = "pricey.holdings"; //
-//char *name5 = "greedy.ventures"; //
-//char *name6 = "shady.ventures"; //
-//char *name7 = "hemmarhoid.camera"; //
-//char *name3 = "pricey.holdings"; //
-const char *name1 = "yoda.guru";
-const char *name2 = "unicycles.bike";
-const char *name3 = "test-validate.claimsgasix";
-const char *name4 = "horny.singles";
-const char *name5 = "atmospheric.lighting";
-const char *name6 = "mushroomtheory.management";
-
- static TestEnvironment props;
-
- static std::string TEST_SE =
- "";
#include "AC_OTE.h"
@@ -89,7 +269,7 @@ void ausRegEPPTK::doOTEA()
try {
Timer::setTime("20140101.010101");
auto_ptr manager(SessionManagerFactory::newInstance(&props));
- auto_ptr sess(SessionFactory::newInstance(&props));
+ auto_ptr sess(SessionFactory::newInstance(&props));
op = "startup";
manager->startup();
op = "run (keep-alive)";
@@ -121,6 +301,7 @@ void ausRegEPPTK::doOTEA()
{
theseLogs->logN(2,"General Exception during OTE A (%s).",op.c_str());
}
+
}
#include "donutsOTEB.h"
void ausRegEPPTK::registryXOTE() { // PROD in OTE
@@ -189,9 +370,9 @@ void ausRegEPPTK::registryXOTE() { // PROD in OTE
}
}
- if (actionableFileEvent) { char wxyz[100]; sprintf(wxyz,"/json/%s",event->name);
+ if (actionableFileEvent) { char wxyz[100]; sprintf(wxyz,"/json/%s",event->name);
- while (JSONBatchInProgress) {
+ while (JSONBatchInProgress) {
theseLogs->logN(0, "Waiting for pending batch to complete." );
sleep(2);
}
@@ -233,7 +414,7 @@ void ausRegEPPTK::registryXOTE() { // PROD in OTE
theseLogs->logN(0,"End RegistryXOTE Session.");
}
void ausRegEPPTK::doPROD()
-{
+{ char *endTransMsg;
int debug=1000000,hours=0,hoops,minutes=0,seconds=0,idleSeconds=0,lastPolicyHandshake=0,
lastSeconds=0,lastMinutes,iqSize=acq.max_size();
string op("newInstance");
@@ -249,40 +430,47 @@ void ausRegEPPTK::doPROD()
try {
Timer::setTime("20140101.010101");
auto_ptr manager(SessionManagerFactory::newInstance(&props));
- auto_ptr sess(SessionFactory::newInstance(&props));
+ auto_ptr sess(SessionFactory::newInstance(&props));
op = "startup";
manager->startup();
op = "run (keep-alive)";
manager->run();
sess->open();
-// ac_mgr = manager;
-// ac_sess = sess;
while ((1440 - minutes) > EODMARGIN) {
- if (!acq.empty()) {
- Transaction *tx = acq.top();
+ if (!acq.empty() && bindDone ) {
+
+ if (bindError) {
+ theseLogs->logN(3,"Flushing %d transactions",acq.size()-1);
+ acq.clear();
+ goto postTrans;
+ }
if (debug > 999)
- theseLogs->logN(3,"Tx dequeued @ minute %d second %d (%d waiting).",minutes,seconds,acq.size()-1);
+ theseLogs->logN(3,"Tx dequeued @ minute %d second %d (%d waiting).",(minutes % 60),(seconds % 60),acq.size()-1);
- //manager->execute(*tx);
+ inProgress = acq.top();
+ inProgress->setSession(manager);
+ inProgress->doIt();
+
+ postTrans:
if (debug > 999)
- theseLogs->logN(2,"Tx completed @ minute %d second %d.",minutes,seconds);
+ theseLogs->logN(2,"Tx completed @ minute %d second %d.",(minutes % 60),(seconds % 60));
idleSeconds = 0;
+ if (!bindError)
+ acq.pop();
if (!acq.size())
JSONBatchInProgress = false;
- acq.pop();
- delete tx;
}
if (!lastPolicyHandshake || (seconds - lastPolicyHandshake >= (REGISTRY_HANDSHAKE - 5)))
- {lastPolicyHandshake = 1; goto skipHandshake;
+ {if (!lastPolicyHandshake) lastPolicyHandshake = 1; goto skipHandshake;
idleSeconds = 0;
if (debug > 99)
- theseLogs->logN(3,"AC-Registry Policy Handshake %d:%d:%d.",hours-1,minutes,seconds);
+ theseLogs->logN(3,"AC-Registry Policy Handshake %d:%d:%d.",hours-1,(minutes % 60),(seconds % 60));
lastPolicyHandshake = seconds;
sess->writeXML(TEST_SE);
sess->read();
@@ -302,7 +490,7 @@ void ausRegEPPTK::doPROD()
}
if (debug > 9999 && !(seconds % 120))
- theseLogs->logN(3,"AC Production %d:%d:%d.",hours-1,minutes,seconds);
+ theseLogs->logN(3,"AC Production %d:%d:%d.",hours-1,(minutes % 60),(seconds %60));
}
sess->close();
diff --git a/AusRegCliever/server/mdJSON.cpp b/AusRegCliever/server/mdJSON.cpp
index 1d930ef..8966030 100644
--- a/AusRegCliever/server/mdJSON.cpp
+++ b/AusRegCliever/server/mdJSON.cpp
@@ -9,19 +9,21 @@
#include // sort
#include
#include
+#include
#include "mdJSON.hpp"
- extern bool JSONBatchInProgresse;
-
- extern Json::Value parms[MAX_OTE_CASE];
+ extern bool JSONBatchInProgress,bindDone;
+ extern const char *parms[MAX_OTE_CASE];
namespace ACPRODINOTE {
- extern string thisRegistry, thisAccount, thatAccount;
+ extern string thisDesc, thisRegistry, thisAccount, thatAccount;
+ extern testDescs theseSpecs;
extern testCases theseCases;
extern testFuncs theseFuncs;
extern int cmd,thisCase;
- extern bool bindError;
+ extern bool bindError,dryRun;
+ extern Json::Value theseParms;
}
using namespace std;
@@ -47,8 +49,8 @@ readInputTestFile( const char *path )
bool mdJSON::run()
{
- bool lastMemberWasString=false,parseError=false,done=false;
- int i=0, nCases =0, nThings = 0, debug=1000;
+ bool lastMemberWasString=false,parseError=false,done=false,parseOnly=false;;
+ int i=0, mCases=0, nCases =0, debug=100;
const Json::Value suite = root["testSuiteAC"];
@@ -67,13 +69,14 @@ bool mdJSON::run()
return true;
}
- theseLogs->logN(1,"'testSuiteAC' - binding %d fields and case objects.",suite.size());
+ theseLogs->logN(1,"'testSuiteAC' - parse and bind %d fields and case objects.",suite.size());
Json::Value::Members itemNames = suite.getMemberNames();
string thisTestCase(""), thisTestCaseDesc("");
ACPRODINOTE::thisRegistry = string("");
ACPRODINOTE::thisAccount = string("");
ACPRODINOTE::thatAccount = string("");
+ ACPRODINOTE::dryRun = false;
for ( i = 0; i < itemNames.size(); ++i ) { const char *thisItem;
try {
@@ -81,54 +84,85 @@ bool mdJSON::run()
Json::Value thisMember = suite.get(thisItem,root);
if (debug > 100000)
theseLogs->logN(1,"item %s.",thisItem);
- if (!stricmp(thisItem,"registry") && thisMember.isString()) {
+ if (thisMember.isBool()) {
+ if (!stricmp(thisItem,"dryrun")) {
+ theseLogs->logN(0,"The script has toggled transactioning.");
+ ACPRODINOTE::dryRun = thisMember.asBool();
+ continue;
+ }
+ if (!stricmp(thisItem,"parseonly")) {
+ theseLogs->logN(0,"The script has toggled execution.");
+ parseOnly = thisMember.asBool();
+ continue;
+ }
+ }
+ if (thisMember.isString()) {
+ if (!stricmp(thisItem,"registry")) {
theseLogs->logN(1,"The primary name provider is '%s'",thisMember.asString().c_str());
ACPRODINOTE::thisRegistry = thisMember.asString();
continue;
- }
- if (!stricmp(thisItem,"accounta") && thisMember.isString()) {
+ }
+ if (!stricmp(thisItem,"accounta")) {
theseLogs->logN(1,"The first OTE account is '%s'",thisMember.asString().c_str());
ACPRODINOTE::thisAccount = thisMember.asString();
continue;
- }
- if (!stricmp(thisItem,"accountb") && thisMember.isString()) {
+ }
+ if (!stricmp(thisItem,"accountb")) {
theseLogs->logN(1,"The second OTE account is '%s'",thisMember.asString().c_str());
ACPRODINOTE::thatAccount = thisMember.asString();
continue;
+ }
+ if (strncmp(thisItem,"Case",4)) continue;
+ if (strlen(thisItem) < 6) continue;
+ if (mCases >= 1) { int k;
+ for (k=0;k < mCases;k++)
+ if (!strnicmp(ACPRODINOTE::theseSpecs[k].case_name.c_str(),thisItem,6)) {
+ parseError = true;
+ theseLogs->logN(1,"multiple '%s', not supported, use multiple files.",thisItem);
+ }
+ }
+ if (debug > 10000)
+ theseLogs->logN(1,"case desc: %s.",thisMember.asString().c_str());
+ ACPRODINOTE::theseSpecs[mCases].case_name = string(thisItem);
+ ACPRODINOTE::theseSpecs[mCases++].case_desc = thisMember.asString();
}
- if (strncmp(thisItem,"case",4)) continue;
- if (strlen(thisItem) != 6) continue;
- if (debug > 100000)
- theseLogs->logN(1,"case %s.",thisItem);
- if (!ACPRODINOTE::theseFuncs[thisItem]) {
- theseLogs->logN(1,"No logic to bind to '%s', need it.",thisItem);
- return false;
- }
- if (thisMember != root && thisMember.isString()) {
- thisTestCase = string(thisItem);
- if (!lastMemberWasString)
- {thisTestCaseDesc = thisMember.asString(); lastMemberWasString = true;}
- else {
- parseError = true;
- theseLogs->logN(0,"Invalid consecutive strings in outer test suite.");
- theseLogs->logN(0,"Must be descriptive comment then test object it describes.");
- }
- lastMemberWasString = true;
- continue;
- }
- if (thisMember != root && thisMember.isObject()) {
- parms[nCases] = suite.get(thisItem,root);
- ACPRODINOTE::theseCases[nCases].fBody = ACPRODINOTE::theseFuncs[thisItem];
- ACPRODINOTE::theseCases[nCases++].caseName = thisItem;
- lastMemberWasString = false;
- ACPRODINOTE::theseCases[nCases++].desc = thisTestCaseDesc;
- }
+ else { char w0[16];
+ if (strncmp(thisItem,"case",4)) continue;
+ if (strlen(thisItem) < 6) continue;
+ memcpy(w0,thisItem,6); w0[6] =0;
+ if (thisMember != root && thisMember.isObject() && !parseError) {
+ if (!ACPRODINOTE::theseFuncs[w0]) {
+ theseLogs->logN(1,"No logic to bind to '%s', need it.",thisItem);
+ return true;
+ }
+ parms[nCases] = itemNames[i].c_str();
+ ACPRODINOTE::theseCases[nCases].fBody = ACPRODINOTE::theseFuncs[w0];
+ ACPRODINOTE::theseCases[nCases++].caseName = thisItem;
+ }
+ }
+ }
+ catch (exception e)
+ {
+ //void *array[20];
+ //size_t size;
+
+ // get void*'s for all entries on the stack
+ //size = backtrace(array, 20);
+
+ theseLogs->logN(2,"Item %s fault: %s ",thisItem, e.what());
+ //backtrace_symbols_fd(array, size, thisConfig->);
+
+ AC_ASSERTIONP(false)
}
catch (...)
{
- theseLogs->logN(1,"Test case parse exception: %s ",thisItem );
- }
- }
+ theseLogs->logN(1,"Test case parse exception: %s ",thisItem );
+ AC_ASSERTIONP(false)
+ }
+ }// for
+
+ if (mCases != nCases ) {
+ theseLogs->logN(2,"spec - case body mismatch (%d:%d).", mCases, nCases); parseError = true; }
if (ACPRODINOTE::thisRegistry.empty()) {
theseLogs->logN(0,"No primary name provider."); parseError = true; }
@@ -141,16 +175,21 @@ bool mdJSON::run()
return true;
}
+ bindDone = false;
ACPRODINOTE::bindError = false;
- theseLogs->logN(1,"%d cases parsed, bind and queueing begins.",nCases);
+ if (parseOnly) {
+ theseLogs->logN(0,"If you see no errors above, script is valid syntactically.");
+ JSONBatchInProgress = false;
+ goto endBind;
+ }
+ theseLogs->logN(1,"%d case(s) parsed, bind and queueing begins.",nCases);
for (i=0;ilogN(2,"%d Setup %s ...",i+1,ACPRODINOTE::theseCases[i].caseName );
- ACPRODINOTE::thisCase = ACPRODINOTE::theseCases[i].parms;
ACPRODINOTE::theseCases[i].fBody();
- theseLogs->logN(3,"%d ... %s %d parameter(s) ",i+1,ACPRODINOTE::theseCases[i].caseName,parms[i].size() );
+ theseLogs->logN(3,"%d ... %s %d parameter(s) ",i+1,ACPRODINOTE::theseCases[i].caseName,ACPRODINOTE::theseParms.size() );
}
catch (exception e)
{
@@ -163,11 +202,13 @@ bool mdJSON::run()
}
if (ACPRODINOTE::bindError) {
theseLogs->logN(0,"binding errors, script cannot be run");
- return true;
+ done = true;
+ goto endBind;
}
else
- theseLogs->logN(0,"Suite 'testSuiteAC' end bind and queue for execution.");
-
+ theseLogs->logN(0,"Suite 'testSuiteAC' bound and and queued for execution.");
+ endBind:
+ bindDone = true;
return done; // Should be false if no error.
}
diff --git a/json/OTEC.json b/json/OTEC.json
index 83123d5..37f05d4 100644
--- a/json/OTEC.json
+++ b/json/OTEC.json
@@ -1,95 +1,106 @@
-
{
- "_comment" : "mdJSON.cpp will try to bind data and run if it recognizes the leading field name.",
- "_comment" : "I'm using convention of inserting a hyphen to disable a test case.",
+ "_comment" : "This script demonstrates the PRODinOTE JSON EPP scripting mechanism",
"testSuites": "Outer block of a set of inputs to mdJSON.cpp to be run by ausRegTK::registryXOTE()",
- "testSuites": "Repeat case name casexx as needed, to run needs logic bound in RegistryXOTE.h",
+ "testSuites": "First 6 chars of 'casexx' name backend logic bound in AC_OTE.h",
+
+ "name" : "bestever.camera",
+ "name" : "yoda.guru",
+ "name" : "unicycles.bike",
+ "name" : "test-validate.claimsgasix",
+ "parseonly" : "Set this in outer suite object for JSON parse only.",
+ "dryrun" : "If set in a test case disables transactions, use to test in production.",
"testSuiteAC" : {
- "Registry" : "Donuts",
- "AccountA" : "secura1-ote",
- "AccountB" : "secura2-ote2",
+ "Registry" : "mod_epp",
+ "AccountA" : "greg1-ote",
+ "AccountB" : "greg2-ote",
- "case00" : "Create a contact",
- "case00" : {
-
- "cont_id": "renjuan2",
- "cont_pw": "Ab9dW@rd",
- "cont_email": "juan@acm.org",
- "cont-name": "Ren Ren-Juan",
- "cont-city": "Niagara Falls",
- "cont_street1": "2926 2nd Street",
- "cont-province": "NY",
- "cont-postal-code": "14305",
- "cont-guo": "US",
- "cont-org": "American Kybernetik"
-
- },
-
- "case01" : "Conventional / Standard/ Unextended Check",
- "case01" : {
-
- "name" : "bestever.camera"
-
- },
-
- "case02" : "Check with Claims Extension",
- "case02" : {
-
- "name" : "unicycles.bike"
- },
-
- "case03" : "Conventional / Standard / Unextended Create",
- "case03" : {
-
- "name" : "greedy.ventures"
-
- },
-
- "case04" : "DPML Create",
- "case04" : {
-
- "name" : "face.dpml.zone",
- "smd-data" : "./smd/face-test.smd"
-
- },
-
- "case00" : "Create another contact",
- "case00" : {
+ "Case00" : "Create a contact",
+ "case00" : {
+ "dryrun" : true,
"cont_id": "renjuan3",
"cont_pw": "Ab9dW@rd",
"cont_email": "juan@acm.org",
- "cont-name": "Ren Ren-Juan",
- "cont-city": "Niagara Falls",
+ "cont_name": "Ren Ren-Juan",
+ "cont_city": "Niagara Falls",
"cont_street1": "2926 2nd Street",
- "cont-province": "NY",
- "cont-postal-code": "14305",
- "cont-guo": "US",
- "cont-org": "American Kybernetik"
+ "cont_province": "NY",
+ "cont_postal_code": "14305",
+ "cont_guo": "US",
+ "cont_org": "American Kybernetik"
},
- "case04" : "DPML Create",
- "case04" : {
-
- "name" : "secura.dpml.zone",
- "smd-data" : "./smd/secura-test.smd"
+ "Case01" : "Conventional / Standard/ Unextended Check",
+ "case01" : {
+ "cont_id" : "renjuan",
+ "name" : "bestever.camera"
+
},
- "case05" : "Create with TCN Override",
+
+ "Case02" : "Check with Claims Extension",
+ "case02" : {
+
+ "dryrun" : true,
+ "cont_id" : "renjuan",
+ "name" : "unicycles.bike"
+
+ },
+
+ "Case03" : "Conventional Standard Unextended Create",
+ "case03" : {
+
+ "cont_id" : "renjuan",
+ "name" : "mushroomtheory.management"
+
+ },
+
+ "Case04" : "DPML Create",
+ "case04" : {
+
+ "dryrun" : true,
+ "cont_id" : "renjuan",
+"launch_phase" : "custom",
+ "name" : "face.dpml.zone",
+ "smd_data" : "boitedetest.smd"
+
+ },
+
+ "Case05" : "Create with TCN Override",
"case05" : {
- "name" : "greedy.ventures",
- "noticeID" : "",
- "notBefore" : "",
- "acceptedDate" : ""
+ "dryrun" : true,
+"launch_phase" : "sunrise",
+ "cont_id" : "renjuan",
+ "name" : "test-validate.claimsgasix",
+ "noticeID" : "d85159710000000000000008692",
+ "notAfter" : "2015-01-01T12:00:00Z",
+ "acceptedDate" : "2014-01-27T19:00:00Z"
- }
+ },
+
+ "Case06" : "Transfer between secondary name provider accounts",
+ "case06" : {
+
+ "dryrun" : true,
+ "isGainer" : false,
+ "name" : "bestever.camera"
+
+ }
- }
+ } ,
+
+ "name" : "nortonkramden.ventures",
+ "name" : "pricey.holdings",
+ "name" : "greedy.ventures",
+ "name" : "shady.ventures",
+ "name" : "hemmarhoid.camera",
+ "name" : "pricey.holdings",
+ "name" : "atmospheric.lighting"
}