This commit is contained in:
Ren RenJuan 2014-02-04 19:58:44 +00:00
parent 70e438feee
commit ae874916f7
13 changed files with 798 additions and 528 deletions

185
.cproject
View File

@ -3,8 +3,8 @@
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> <cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings"> <storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1489137557"> <cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1217424711">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1489137557" moduleId="org.eclipse.cdt.core.settings" name="Default"> <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1217424711" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/> <externalSettings/>
<extensions> <extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
@ -16,27 +16,27 @@
</extensions> </extensions>
</storageModule> </storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> <storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="git" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1489137557" name="Default" parent="org.eclipse.cdt.build.core.emptycfg"> <configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1217424711" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1489137557.45876174" name="/" resourcePath=""> <folderInfo id="cdt.managedbuild.toolchain.gnu.base.1217424711.856785893" name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1604623789" name="cdt.managedbuild.toolchain.gnu.base" superClass="cdt.managedbuild.toolchain.gnu.base"> <toolChain id="cdt.managedbuild.toolchain.gnu.base.925418553" name="cdt.managedbuild.toolchain.gnu.base" superClass="cdt.managedbuild.toolchain.gnu.base">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.base.1489688336" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.base.1993697899" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
<builder id="cdt.managedbuild.target.gnu.builder.base.1594561920" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.base"/> <builder command="make" id="cdt.managedbuild.target.gnu.builder.base.175415971" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1326612781" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/> <tool id="cdt.managedbuild.tool.gnu.archiver.base.1200271753" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.637187500" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base"> <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1983895476" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1015923900" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1234249186" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool> </tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1814883119" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base"> <tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1315644047" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1118638960" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1808159100" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool> </tool>
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.1481582528" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/> <tool id="cdt.managedbuild.tool.gnu.c.linker.base.1545803542" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1048700328" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base"> <tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.138368163" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1629920531" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.270762206" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/> <additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType> </inputType>
</tool> </tool>
<tool id="cdt.managedbuild.tool.gnu.assembler.base.264833315" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base"> <tool id="cdt.managedbuild.tool.gnu.assembler.base.1987364525" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.853558430" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> <inputType id="cdt.managedbuild.tool.gnu.assembler.input.223635164" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool> </tool>
</toolChain> </toolChain>
</folderInfo> </folderInfo>
@ -45,19 +45,19 @@
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration> </cconfiguration>
</storageModule> </storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="git.null.364140434" name="git"/>
</storageModule>
<storageModule moduleId="scannerConfiguration"> <storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</storageModule> </storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="DNSEPPUS.null.1436811639" name="DNSEPPUS"/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope"/>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"> <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
<buildTargets> <buildTargets>
<target name="libACTK1_0.so" path="ACTK1_0" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> <target name="all" path="ACTK1_0" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand> <buildCommand>make</buildCommand>
<buildTarget>libACTK1_0.so</buildTarget> <buildArguments/>
<buildTarget>all</buildTarget>
<stopOnError>true</stopOnError> <stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand> <useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders> <runAllBuilders>true</runAllBuilders>
@ -70,44 +70,23 @@
<useDefaultCommand>true</useDefaultCommand> <useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders> <runAllBuilders>true</runAllBuilders>
</target> </target>
<target name="tests" path="ACTK1_0" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> <target name="dclean" path="ACTK1_0" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand> <buildCommand>make</buildCommand>
<buildTarget>tests</buildTarget> <buildArguments/>
<buildTarget>dclean</buildTarget>
<stopOnError>true</stopOnError> <stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand> <useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders> <runAllBuilders>true</runAllBuilders>
</target> </target>
<target name="dirs" path="ACTK1_0" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> <target name="dirs" path="ACTK1_0" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand> <buildCommand>make</buildCommand>
<buildArguments/>
<buildTarget>dirs</buildTarget> <buildTarget>dirs</buildTarget>
<stopOnError>true</stopOnError> <stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand> <useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders> <runAllBuilders>true</runAllBuilders>
</target> </target>
<target name="dclean" path="ACTK1_0" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> <target name="clean" path="AusRegCliever" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildTarget>dclean</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="all" path="ACTK1_0" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments/>
<buildTarget>all</buildTarget>
<stopOnError>false</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="adHoc" path="ACTK1_0" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments/>
<buildTarget>build/LPChkExtension.o</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>false</runAllBuilders>
</target>
<target name="clean" path="ACTK1_3_2" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand> <buildCommand>make</buildCommand>
<buildArguments/> <buildArguments/>
<buildTarget>clean</buildTarget> <buildTarget>clean</buildTarget>
@ -115,96 +94,14 @@
<useDefaultCommand>true</useDefaultCommand> <useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders> <runAllBuilders>true</runAllBuilders>
</target> </target>
<target name="all" path="ACTK1_3_2" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> <target name="dirs" path="AusRegCliever" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand> <buildCommand>make</buildCommand>
<buildArguments/> <buildArguments/>
<buildTarget>all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="tests" path="ACTK1_3_2" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildTarget>tests</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="clean" path="APIG" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments/>
<buildTarget>clean</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="dirs" path="APIG" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildTarget>dirs</buildTarget> <buildTarget>dirs</buildTarget>
<stopOnError>true</stopOnError> <stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand> <useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders> <runAllBuilders>true</runAllBuilders>
</target> </target>
<target name="apig-cli" path="APIG" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildTarget>apig-cli</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="build/commander.o" path="APIG" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments/>
<buildTarget>build/commander.o</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="build/ausreg-cd" path="APIG" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments/>
<buildTarget>build/ausreg-cd</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="cliever" path="APIG" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments/>
<buildTarget>cliever</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="all" path="APIG" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments/>
<buildTarget>all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="AusRegEPPTK.so" path="AusRegEPPTK" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildTarget>all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="tests" path="AusRegEPPTK" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildTarget>tests</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="clean" path="AusRegEPPTK" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildTarget>clean</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="cliever" path="AusRegCliever" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> <target name="cliever" path="AusRegCliever" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand> <buildCommand>make</buildCommand>
<buildArguments/> <buildArguments/>
@ -213,27 +110,19 @@
<useDefaultCommand>true</useDefaultCommand> <useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders> <runAllBuilders>true</runAllBuilders>
</target> </target>
<target name="clean" path="AusRegCliever" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> <target name="all" path="AusRegCliever" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand> <buildCommand>make</buildCommand>
<buildTarget>clean</buildTarget> <buildArguments/>
<stopOnError>false</stopOnError> <buildTarget>all</buildTarget>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="distclean" path="AusRegCliever" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildTarget>distclean</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="build/ausreg-md" path="AusRegCliever" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildTarget>build/ausreg-md</buildTarget>
<stopOnError>true</stopOnError> <stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand> <useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders> <runAllBuilders>true</runAllBuilders>
</target> </target>
</buildTargets> </buildTargets>
</storageModule> </storageModule>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Default">
<resource resourceType="PROJECT" workspacePath="/DNSEPPUS"/>
</configuration>
</storageModule>
</cproject> </cproject>

View File

@ -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 \ 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/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/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/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 \ 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/DataResponse.o build/E164Extension.o build/Logger.o \
build/SMDExtension.o build/ACProxyCommand.o \ build/SMDExtension.o build/ACProxyCommand.o \
build/PollResponse.o build/SessionManagerFactory.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 .PHONY: tests
tests: all $(test_execs) tests: all $(test_execs)

View File

@ -17,9 +17,10 @@ namespace {
} }
}; // anonymous namespace }; // anonymous namespace
void LPCrtCmdExtension::setSMD() void LPCrtCmdExtension::setSMD(std::string smdIn)
{ {
haveSMD = true; haveSMD = true;
smdData = smdIn;
} }
void LPCrtCmdExtension::addToCommand(const Command &command) const void LPCrtCmdExtension::addToCommand(const Command &command) const

View File

@ -19,13 +19,15 @@ class LPCrtCmdExtension : public CommandExtension
void setNoticeID(string &idVal,string &notAftVal, string &acceptedVal) { void setNoticeID(string &idVal,string &notAftVal, string &acceptedVal) {
noticeID = idVal; notAfter = notAftVal; acceptedDate = acceptedVal; haveNoticeID = true; noticeID = idVal; notAfter = notAftVal; acceptedDate = acceptedVal; haveNoticeID = true;
} }
void setSMD(); void setSMD(std::string toWhat);
private: private:
bool haveNoticeID,haveSMD; bool haveNoticeID,haveSMD;
std::string acceptedDate;
std::string lpePhaseName; std::string lpePhaseName;
std::string noticeID; std::string noticeID;
std::string notAfter; 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 #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+");

View File

@ -16,8 +16,8 @@ Cc=gcc
ifeq ($(LOCATION),DEBIAN_7) ifeq ($(LOCATION),DEBIAN_7)
ifneq ($(ARTKENABLED),0) ifneq ($(ARTKENABLED),0)
ARTKLIB=-L/home/jdaugherty/clients/reg.de/git/ACTK1_0/lib ARTKLIB=-L/home/jdaugherty/clients/greg/git/ACTK1_0/lib
ARTKINCL=-I/home/jdaugherty/clients/reg.de/git/ACTK1_0 ARTKINCL=-I/home/jdaugherty/clients/greg/git/ACTK1_0
endif endif
endif endif
@ -60,11 +60,11 @@ XERCES_LIB = xerces-c
XERCES_INC_DIR = /opt/local/include/xercesc/ XERCES_INC_DIR = /opt/local/include/xercesc/
endif 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 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) 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 # ---------- Should not need to change below

View File

@ -8,220 +8,334 @@
#ifndef REGISTRYOTE_H_ #ifndef REGISTRYOTE_H_
#define REGISTRYOTB_H_ #define REGISTRYOTB_H_
typedef auto_ptr<SessionManager> AC_SESSMGR; ACTx *inProgress;
typedef auto_ptr<Session> AC_SESSION;
static AC_SESSMGR ac_mgr;
static AC_SESSION ac_sess;
int nCases,thisCase; int nCases,thisCase;
testDescs theseSpecs;
testCases theseCases; testCases theseCases;
testFuncs theseFuncs; testFuncs theseFuncs;
Json::Value theseParms;
bool acTkInitialised = false, fatal = false, done = false, transferGainer, bool acTkInitialised = false, fatal = false, done = false, transferGainer,
bindError; bindError;
const char *thisName = "registrar.ote"; const string claims("claims"), dpml("custom"), landrush("landrush"), sunrise("sunrise");
string thisRegistry("Unknown"), thatAccount("Unknown"), thisAccount("Unknown"), shitName;
int cmd=0,debug=1000; const char *thisName = "registrar.ote", *thisDesc;
string op("newInstance");
const string claims("claims"), dpml("custom"), landrush("landrush"), sunrise("sunrise"); string thisRegistry("Unknown"), thatAccount("Unknown"), thisAccount("Unknown");
std::string ctc("renjuan"); int debug=1000;
std::string ctcPW("Ab9dW@rd");
std::string ctcEmail("juan@acm.org");
std::string ctcName("Ren Ren-Juan");
std::string ctcCity("Niagara Falls");
std::vector<std::string>
ctcCrib(1,"2926 2nd Strt");
std::string ctcProv("NY");
std::string ctcPC("14305");
std::string ctcGuo("US");
std::string ctcOrg("American Kybernetik");
std::string pw("Ab9dW@rd"); commandFrame *ctxt;
std::string RID("renjuan");
std::vector<std::string> tech(1,std::string("renjuan") ); inline bool checkAndSetBool(bool &target,const char *jsonName,const bool defaultValue,bool required) {
std::vector<std::string> admin(1,std::string("renjuan") );
std::vector<std::string> billing(1,std::string("renjuan") );
std::vector<std::string> ns(1,std::string("ns1.google.com") );;
const IntPostalInfo ctcPO(ctcName,ctcOrg, bool value = true;
ctcCrib,ctcCity,ctcProv,ctcPC,ctcGuo);
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() { inline bool checkNameOK() {
if (!parms[thisCase].isMember("name")) { if (!theseParms.isMember("name")) {
theseLogs->logN(1,"(%d) no 'name' field",cmd); theseLogs->logN(1,"%d - no 'name' field",thisCase+1);
ACPRODINOTE::bindError = true; ACPRODINOTE::bindError = true;
return false; return false;
} }
shitName = parms[thisCase]["name"].asString(); ctxt->shitName = theseParms.get("name","noname").asString();
thisName = shitName.c_str(); thisName = ctxt->shitName.c_str();
return true; return true;
} }
inline bool checkContOK() { inline bool checkContOK() {
if (!parms[thisCase].isMember("cont_id")) { bool value = checkAndSetStr(ctxt->ctc,"cont_id","renjuan",true);
ACPRODINOTE::bindError = true;
theseLogs->logN(1,"(%d) no 'cont_id' field",cmd);
return false;
} 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")) { return checkAndSetStr(ctxt->pw,"cont_pw","Ab9dW@rd",true);
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) );
}
} }
void checkClaims() { inline bool checkPhaseOK() {
return checkAndSetStr(ctxt->thisLaunchPhase,"launch_phase","sunrise",true);
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));
}
} }
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 <DomainCheckCommand , DomainCheckResponse, LPChkCmdExtension, LPChkRespExtension > *txq;
txq = new TxQ<DomainCheckCommand , DomainCheckResponse, LPChkCmdExtension, LPChkRespExtension>
(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 <DomainCheckCommand , DomainCheckResponse, LPChkCmdExtension, LPChkRespExtension > *txq;
txq = (TxQ<DomainCheckCommand, DomainCheckResponse, LPChkCmdExtension, LPChkRespExtension>*) 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 <DomainCheckCommand , DomainCheckResponse, LPChkCmdExtension, LPChkRespExtension > *txq;
txq = new TxQ<DomainCheckCommand , DomainCheckResponse, LPChkCmdExtension, LPChkRespExtension >
(&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()) if (checkNameOK() && checkContOK())
{ {
TxQ <DomainCreateCommand , DomainCreateResponse, LPCrtCmdExtension, LPCrtRespExtension > *txq;
txq = new TxQ<DomainCreateCommand , DomainCreateResponse, LPCrtCmdExtension, LPCrtRespExtension >
( ctxt->shitName, ctxt->pw, &ctxt->RID );
DomainCreateCommand *c = new DomainCreateCommand(shitName,pw,&RID, &tech, &ns, &admin, &billing); txq->set(ctxt,theseSpecs[thisCase].case_name.c_str());
DomainCreateResponse *r = new DomainCreateResponse(); 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); TxQ <DomainCreateCommand , DomainCreateResponse, LPCrtCmdExtension, LPCrtRespExtension > *txq;
crtE1.setNoticeID(noticeID, notAfter, acceptedDate); txq = new TxQ<DomainCreateCommand , DomainCreateResponse, LPCrtCmdExtension, LPCrtRespExtension >
c->appendExtension(crtE1); (ctxt->shitName, ctxt->pw, &ctxt->RID, &ctxt->tech, &ctxt->ns, &ctxt->admin, &ctxt->billing, NULL, &ctxt->thisLaunchPhase);
DomainCreateResponse *r;
theseLogs->logN(2,"(%d) Queue create %s w Notice ID test data (TCN).",++cmd,thisName); txq->ce->setNoticeID(ctxt->noticeID, ctxt->notAfter, ctxt->acceptedDate);
acq.push(new Transaction(c, r)); 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); if (checkContOK() ) {
ContactCreateResponse *r = new ContactCreateResponse();
theseLogs->logN(2,"(%d) Queue create contact %s.",++cmd,ctc.c_str()); TxQ <ContactCreateCommand , ContactCreateResponse, CommandExtension, ResponseExtension > *txq;
acq.push(new Transaction(c, r)); txq = new TxQ<ContactCreateCommand , ContactCreateResponse, CommandExtension, ResponseExtension >
(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 <DomainCreateCommand , DomainCreateResponse, LPCrtCmdExtension, LPCrtRespExtension > *txq;
txq = new TxQ<DomainCreateCommand , DomainCreateResponse, LPCrtCmdExtension, LPCrtRespExtension >
(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); txq->ce->setSMD(ctxt->smdData);
crtE2.setSMD(); txq->c->appendExtension(*txq->ce);
c->appendExtension(crtE2);
DomainCreateResponse *r = new DomainCreateResponse();
theseLogs->logN(2,"(%d) Queue DPML block create %s w boitedetest.smd data.",++cmd,thisName); txq->set(ctxt,theseSpecs[thisCase].case_name.c_str());
acq.push(new Transaction(c, r)); 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); TxQ <DomainCreateCommand , DomainCreateResponse, LPCrtCmdExtension, LPCrtRespExtension > *txq;
c->appendExtension(crtE1); txq = new TxQ<DomainCreateCommand , DomainCreateResponse, LPCrtCmdExtension, LPCrtRespExtension >
DomainCreateResponse *r = new DomainCreateResponse(); (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); txq->ce->setSMD(ctxt->smdData);
acq.push(new Transaction(c, r)); 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); TxQ <DomainTransferRequestCommand , DomainTransferResponse, CommandExtension, ResponseExtension > *txq;
DomainTransferApproveCommand *c1 = new DomainTransferApproveCommand(thisName,ctcPW); txq = new TxQ<DomainTransferRequestCommand , DomainTransferResponse, CommandExtension, ResponseExtension>
DomainTransferResponse *r = new DomainTransferResponse(); (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++, } else {
thisName,thatAccount.c_str());
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<Session> AC_SESSION;
theseFuncs["case05"] = createClaimOverride; theseFuncs["case05"] = createClaimOverride;
theseFuncs["case06"] = transfer; 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());
} }

View File

@ -8,6 +8,87 @@
#ifndef DONUTSOTEB_H_ #ifndef DONUTSOTEB_H_
#define 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() void ausRegEPPTK::doOTEB()
{ {
bool addDomains = false, debug=true, contactCreated = true, doTransfers = false, bool addDomains = false, debug=true, contactCreated = true, doTransfers = false,
@ -15,8 +96,8 @@ void ausRegEPPTK::doOTEB()
int cmd=0; int cmd=0;
const char *thatAccount="secura2-ote2", *thisAccount="secura1-ote"; const char *thatAccount="secura2-ote2", *thisAccount="secura1-ote";
string op("newInstance"); string op("newInstance");
const string claims("claims"), dpml("custom"), landrush("landrush"), sunrise("sunrise"); const string claims("claims"), dpml("custom"), landrush("landrush"), sunrise("sunrise");
LPCrtCmdExtension crtE1( &claims ), crtE2( &dpml ); 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()); theseLogs->logN(2,"(%d) Create %s w ICANN SMD file.",++cmd,dpmlName.c_str());
DomainCreateCommand oteCommand_7(dpmlName,pw,&RID, &tech, &ns, &admin, &billing); DomainCreateCommand oteCommand_7(dpmlName,pw,&RID, &tech, &ns, &admin, &billing);
crtE2.setSMD(); crtE2.setSMD(smdData);
oteCommand_7.appendExtension(crtE2); oteCommand_7.appendExtension(crtE2);
DomainCreateResponse oteResponse_7; DomainCreateResponse oteResponse_7;

View File

@ -11,16 +11,22 @@
typedef void (*caseBody)(void); typedef void (*caseBody)(void);
typedef struct { typedef struct {
string desc; string *desc;
const char *caseName; const char *caseName;
caseBody fBody; caseBody fBody;
int parms; // Index of JSON Value in testSuite00 int parms; // Index of JSON Value in testSuiteAC
} testCase; } testCase;
typedef struct {
string case_name;
string case_desc;
} testDesc;
namespace ACPRODINOTE { namespace ACPRODINOTE {
typedef std::map<int,testCase> testCases; typedef std::map<int,testDesc> testDescs;
typedef std::map<string,caseBody> testFuncs; typedef std::map<int,testCase> testCases;
typedef std::map<string,caseBody> testFuncs;
} }

View File

@ -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 #ifndef MD_COMMON
#define MD_COMMON #define MD_COMMON
#define ACTK_CFG_PATH "./etc/toolkit2.conf" #define ACTK_CFG_PATH "./etc/toolkit2.conf"

View File

@ -169,6 +169,9 @@ void setSignals() {
signal(SIGTSTP,SIG_IGN); /* ignore tty signals */ signal(SIGTSTP,SIG_IGN); /* ignore tty signals */
signal(SIGTTOU,SIG_IGN); // both input signal(SIGTTOU,SIG_IGN); // both input
signal(SIGTTIN,SIG_IGN); // and output signal(SIGTTIN,SIG_IGN); // and output
#ifdef AC_ASSERTIONS
signal(SIGINT, signal_handler); // debug
#endif
signal(SIGSEGV,signal_handler); signal(SIGSEGV,signal_handler);
signal(SIGUSR1,signal_handler); // commander log messages signal(SIGUSR1,signal_handler); // commander log messages
signal(SIGUSR2,signal_handler); // reserved signal(SIGUSR2,signal_handler); // reserved
@ -182,6 +185,7 @@ void signal_handler(int sig)
switch(sig) { switch(sig) {
case SIGSEGV: case SIGSEGV:
theseLogs->logN(0,"SEGV ABEND."); theseLogs->logN(0,"SEGV ABEND.");
case SIGINT:
if (waitForGDB) { if (waitForGDB) {
for (i = 0; for (i = 0;
i < iSaidWaitBiatch; i < iSaidWaitBiatch;

View File

@ -24,17 +24,214 @@
#include <errno.h> #include <errno.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/inotify.h> #include <sys/inotify.h>
#include <sys/stat.h>
#include <json/json.h> #include <json/json.h>
#include <type_traits>
#include <boost/static_assert.hpp>
#include <boost/type_traits.hpp>
#include "mdJSON.hpp" #include "mdJSON.hpp"
Json::Value parms[MAX_OTE_CASE]; typedef struct CMDFRAME { bool thisDryRun;
bool JSONBatchInProgress = false;
namespace ACPRODINOTE { std::string ctc;
std::string ctcPW;
std::string ctcEmail;
std::string ctcName;
std::string ctcCity;
std::vector<std::string>
ctcCrib;
std::string ctcProv;
std::string ctcPC;
std::string ctcGuo;
std::string ctcOrg;
typedef boost::heap::priority_queue<Transaction *> ACWQ; std::string pw;
std::string RID;
ACWQ acq; std::vector<std::string> admin;
std::vector<std::string> billing;
std::vector<std::string> ns;
std::vector<std::string> 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 =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><epp xmlns=\"urn:ietf:params:xml:ns:epp-1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd\"><hello/></epp>";
static std::string nil("nil");
namespace ACPRODINOTE {
bool dryRun;
typedef auto_ptr<SessionManager> AC_SESSMGR;
typedef auto_ptr<Session> 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<SessionManager>& 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 CT,class RT,class CET,class RET>
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("<nameless>") {
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<std::string>* techContacts = NULL,
const std::vector<std::string>* nameservers = NULL,
const std::vector<std::string>* adminContacts = NULL,
const std::vector<std::string>* 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<std::string>* techContacts,
const std::vector<std::string>* nameservers,
const std::vector<std::string>* adminContacts,
const std::vector<std::string>* 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<std::string>&tech, std::vector<std::string>&ns, std::vector<std::string>&admin, std::vector<std::string>&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<Command,CT>::value) );
BOOST_STATIC_ASSERT( (boost::is_base_of<Response,RT>::value) );
BOOST_STATIC_ASSERT( (boost::is_base_of<CommandExtension,CET>::value) );
BOOST_STATIC_ASSERT( (boost::is_base_of<ResponseExtension,RET>::value) );
bool p1 = std::is_base_of<Command,CT>::value;
bool p2 = std::is_base_of<Response,RT>::value;
bool p3 = ce == NULL ? false : std::is_base_of<CommandExtension,CET>::value;
bool p4 = re == NULL ? false : std::is_base_of<ResponseExtension,RET>::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<ACTx *> ACWQ;
ACWQ acq;
using namespace std; using namespace std;
@ -43,23 +240,6 @@ using namespace std;
#define EVENT_SIZE ( sizeof (struct inotify_event) ) #define EVENT_SIZE ( sizeof (struct inotify_event) )
#define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) ) #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 =
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><epp xmlns=\"urn:ietf:params:xml:ns:epp-1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd\"><hello/></epp>";
#include "AC_OTE.h" #include "AC_OTE.h"
@ -89,7 +269,7 @@ void ausRegEPPTK::doOTEA()
try { try {
Timer::setTime("20140101.010101"); Timer::setTime("20140101.010101");
auto_ptr<SessionManager> manager(SessionManagerFactory::newInstance(&props)); auto_ptr<SessionManager> manager(SessionManagerFactory::newInstance(&props));
auto_ptr<Session> sess(SessionFactory::newInstance(&props)); auto_ptr<Session> sess(SessionFactory::newInstance(&props));
op = "startup"; op = "startup";
manager->startup(); manager->startup();
op = "run (keep-alive)"; op = "run (keep-alive)";
@ -121,6 +301,7 @@ void ausRegEPPTK::doOTEA()
{ {
theseLogs->logN(2,"General Exception during OTE A (%s).",op.c_str()); theseLogs->logN(2,"General Exception during OTE A (%s).",op.c_str());
} }
} }
#include "donutsOTEB.h" #include "donutsOTEB.h"
void ausRegEPPTK::registryXOTE() { // PROD in OTE 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." ); theseLogs->logN(0, "Waiting for pending batch to complete." );
sleep(2); sleep(2);
} }
@ -233,7 +414,7 @@ void ausRegEPPTK::registryXOTE() { // PROD in OTE
theseLogs->logN(0,"End RegistryXOTE Session."); theseLogs->logN(0,"End RegistryXOTE Session.");
} }
void ausRegEPPTK::doPROD() void ausRegEPPTK::doPROD()
{ { char *endTransMsg;
int debug=1000000,hours=0,hoops,minutes=0,seconds=0,idleSeconds=0,lastPolicyHandshake=0, int debug=1000000,hours=0,hoops,minutes=0,seconds=0,idleSeconds=0,lastPolicyHandshake=0,
lastSeconds=0,lastMinutes,iqSize=acq.max_size(); lastSeconds=0,lastMinutes,iqSize=acq.max_size();
string op("newInstance"); string op("newInstance");
@ -249,40 +430,47 @@ void ausRegEPPTK::doPROD()
try { try {
Timer::setTime("20140101.010101"); Timer::setTime("20140101.010101");
auto_ptr<SessionManager> manager(SessionManagerFactory::newInstance(&props)); auto_ptr<SessionManager> manager(SessionManagerFactory::newInstance(&props));
auto_ptr<Session> sess(SessionFactory::newInstance(&props)); auto_ptr<Session> sess(SessionFactory::newInstance(&props));
op = "startup"; op = "startup";
manager->startup(); manager->startup();
op = "run (keep-alive)"; op = "run (keep-alive)";
manager->run(); manager->run();
sess->open(); sess->open();
// ac_mgr = manager;
// ac_sess = sess;
while ((1440 - minutes) > EODMARGIN) { while ((1440 - minutes) > EODMARGIN) {
if (!acq.empty()) { if (!acq.empty() && bindDone ) {
Transaction *tx = acq.top();
if (bindError) {
theseLogs->logN(3,"Flushing %d transactions",acq.size()-1);
acq.clear();
goto postTrans;
}
if (debug > 999) 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) 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; idleSeconds = 0;
if (!bindError)
acq.pop();
if (!acq.size()) if (!acq.size())
JSONBatchInProgress = false; JSONBatchInProgress = false;
acq.pop();
delete tx;
} }
if (!lastPolicyHandshake || (seconds - lastPolicyHandshake >= (REGISTRY_HANDSHAKE - 5))) if (!lastPolicyHandshake || (seconds - lastPolicyHandshake >= (REGISTRY_HANDSHAKE - 5)))
{lastPolicyHandshake = 1; goto skipHandshake; {if (!lastPolicyHandshake) lastPolicyHandshake = 1; goto skipHandshake;
idleSeconds = 0; idleSeconds = 0;
if (debug > 99) 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; lastPolicyHandshake = seconds;
sess->writeXML(TEST_SE); sess->writeXML(TEST_SE);
sess->read(); sess->read();
@ -302,7 +490,7 @@ void ausRegEPPTK::doPROD()
} }
if (debug > 9999 && !(seconds % 120)) 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(); sess->close();

View File

@ -9,19 +9,21 @@
#include <algorithm> // sort #include <algorithm> // sort
#include <json/json.h> #include <json/json.h>
#include <stdio.h> #include <stdio.h>
#include <execinfo.h>
#include "mdJSON.hpp" #include "mdJSON.hpp"
extern bool JSONBatchInProgresse; extern bool JSONBatchInProgress,bindDone;
extern const char *parms[MAX_OTE_CASE];
extern Json::Value parms[MAX_OTE_CASE];
namespace ACPRODINOTE { namespace ACPRODINOTE {
extern string thisRegistry, thisAccount, thatAccount; extern string thisDesc, thisRegistry, thisAccount, thatAccount;
extern testDescs theseSpecs;
extern testCases theseCases; extern testCases theseCases;
extern testFuncs theseFuncs; extern testFuncs theseFuncs;
extern int cmd,thisCase; extern int cmd,thisCase;
extern bool bindError; extern bool bindError,dryRun;
extern Json::Value theseParms;
} }
using namespace std; using namespace std;
@ -47,8 +49,8 @@ readInputTestFile( const char *path )
bool mdJSON::run() bool mdJSON::run()
{ {
bool lastMemberWasString=false,parseError=false,done=false; bool lastMemberWasString=false,parseError=false,done=false,parseOnly=false;;
int i=0, nCases =0, nThings = 0, debug=1000; int i=0, mCases=0, nCases =0, debug=100;
const Json::Value suite = root["testSuiteAC"]; const Json::Value suite = root["testSuiteAC"];
@ -67,13 +69,14 @@ bool mdJSON::run()
return true; 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(); Json::Value::Members itemNames = suite.getMemberNames();
string thisTestCase(""), thisTestCaseDesc(""); string thisTestCase(""), thisTestCaseDesc("");
ACPRODINOTE::thisRegistry = string(""); ACPRODINOTE::thisRegistry = string("");
ACPRODINOTE::thisAccount = string(""); ACPRODINOTE::thisAccount = string("");
ACPRODINOTE::thatAccount = string(""); ACPRODINOTE::thatAccount = string("");
ACPRODINOTE::dryRun = false;
for ( i = 0; i < itemNames.size(); ++i ) { const char *thisItem; for ( i = 0; i < itemNames.size(); ++i ) { const char *thisItem;
try { try {
@ -81,54 +84,85 @@ bool mdJSON::run()
Json::Value thisMember = suite.get(thisItem,root); Json::Value thisMember = suite.get(thisItem,root);
if (debug > 100000) if (debug > 100000)
theseLogs->logN(1,"item %s.",thisItem); 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()); theseLogs->logN(1,"The primary name provider is '%s'",thisMember.asString().c_str());
ACPRODINOTE::thisRegistry = thisMember.asString(); ACPRODINOTE::thisRegistry = thisMember.asString();
continue; continue;
} }
if (!stricmp(thisItem,"accounta") && thisMember.isString()) { if (!stricmp(thisItem,"accounta")) {
theseLogs->logN(1,"The first OTE account is '%s'",thisMember.asString().c_str()); theseLogs->logN(1,"The first OTE account is '%s'",thisMember.asString().c_str());
ACPRODINOTE::thisAccount = thisMember.asString(); ACPRODINOTE::thisAccount = thisMember.asString();
continue; continue;
} }
if (!stricmp(thisItem,"accountb") && thisMember.isString()) { if (!stricmp(thisItem,"accountb")) {
theseLogs->logN(1,"The second OTE account is '%s'",thisMember.asString().c_str()); theseLogs->logN(1,"The second OTE account is '%s'",thisMember.asString().c_str());
ACPRODINOTE::thatAccount = thisMember.asString(); ACPRODINOTE::thatAccount = thisMember.asString();
continue; 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; else { char w0[16];
if (strlen(thisItem) != 6) continue; if (strncmp(thisItem,"case",4)) continue;
if (debug > 100000) if (strlen(thisItem) < 6) continue;
theseLogs->logN(1,"case %s.",thisItem); memcpy(w0,thisItem,6); w0[6] =0;
if (!ACPRODINOTE::theseFuncs[thisItem]) { if (thisMember != root && thisMember.isObject() && !parseError) {
theseLogs->logN(1,"No logic to bind to '%s', need it.",thisItem); if (!ACPRODINOTE::theseFuncs[w0]) {
return false; theseLogs->logN(1,"No logic to bind to '%s', need it.",thisItem);
} return true;
if (thisMember != root && thisMember.isString()) { }
thisTestCase = string(thisItem); parms[nCases] = itemNames[i].c_str();
if (!lastMemberWasString) ACPRODINOTE::theseCases[nCases].fBody = ACPRODINOTE::theseFuncs[w0];
{thisTestCaseDesc = thisMember.asString(); lastMemberWasString = true;} ACPRODINOTE::theseCases[nCases++].caseName = thisItem;
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."); catch (exception e)
} {
lastMemberWasString = true; //void *array[20];
continue; //size_t size;
}
if (thisMember != root && thisMember.isObject()) { // get void*'s for all entries on the stack
parms[nCases] = suite.get(thisItem,root); //size = backtrace(array, 20);
ACPRODINOTE::theseCases[nCases].fBody = ACPRODINOTE::theseFuncs[thisItem];
ACPRODINOTE::theseCases[nCases++].caseName = thisItem; theseLogs->logN(2,"Item %s fault: %s ",thisItem, e.what());
lastMemberWasString = false; //backtrace_symbols_fd(array, size, thisConfig->);
ACPRODINOTE::theseCases[nCases++].desc = thisTestCaseDesc;
} AC_ASSERTIONP(false)
} }
catch (...) 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()) { if (ACPRODINOTE::thisRegistry.empty()) {
theseLogs->logN(0,"No primary name provider."); parseError = true; } theseLogs->logN(0,"No primary name provider."); parseError = true; }
@ -141,16 +175,21 @@ bool mdJSON::run()
return true; return true;
} }
bindDone = false;
ACPRODINOTE::bindError = 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;i<ACPRODINOTE::theseCases.size();i++) { ACPRODINOTE::thisCase = i; for (i=0;i<ACPRODINOTE::theseCases.size();i++) { ACPRODINOTE::thisCase = i;
ACPRODINOTE::cmd = 0; ACPRODINOTE::theseParms = suite.get(parms[i],root);
try{ try{
theseLogs->logN(2,"%d Setup %s ...",i+1,ACPRODINOTE::theseCases[i].caseName ); theseLogs->logN(2,"%d Setup %s ...",i+1,ACPRODINOTE::theseCases[i].caseName );
ACPRODINOTE::thisCase = ACPRODINOTE::theseCases[i].parms;
ACPRODINOTE::theseCases[i].fBody(); 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) catch (exception e)
{ {
@ -163,11 +202,13 @@ bool mdJSON::run()
} }
if (ACPRODINOTE::bindError) { if (ACPRODINOTE::bindError) {
theseLogs->logN(0,"binding errors, script cannot be run"); theseLogs->logN(0,"binding errors, script cannot be run");
return true; done = true;
goto endBind;
} }
else 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. return done; // Should be false if no error.
} }

View File

@ -1,95 +1,106 @@
{ {
"_comment" : "mdJSON.cpp will try to bind data and run if it recognizes the leading field name.", "_comment" : "This script demonstrates the PRODinOTE JSON EPP scripting mechanism",
"_comment" : "I'm using convention of inserting a hyphen to disable a test case.",
"testSuites": "Outer block of a set of inputs to mdJSON.cpp to be run by ausRegTK::registryXOTE()", "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" : { "testSuiteAC" : {
"Registry" : "Donuts", "Registry" : "mod_epp",
"AccountA" : "secura1-ote", "AccountA" : "greg1-ote",
"AccountB" : "secura2-ote2", "AccountB" : "greg2-ote",
"case00" : "Create a contact", "Case00" : "Create a contact",
"case00" : { "case00" : {
"cont_id": "renjuan2", "dryrun" : true,
"cont_id": "renjuan3",
"cont_pw": "Ab9dW@rd", "cont_pw": "Ab9dW@rd",
"cont_email": "juan@acm.org", "cont_email": "juan@acm.org",
"cont-name": "Ren Ren-Juan", "cont_name": "Ren Ren-Juan",
"cont-city": "Niagara Falls", "cont_city": "Niagara Falls",
"cont_street1": "2926 2nd Street", "cont_street1": "2926 2nd Street",
"cont-province": "NY", "cont_province": "NY",
"cont-postal-code": "14305", "cont_postal_code": "14305",
"cont-guo": "US", "cont_guo": "US",
"cont-org": "American Kybernetik" "cont_org": "American Kybernetik"
}, },
"case01" : "Conventional / Standard/ Unextended Check", "Case01" : "Conventional / Standard/ Unextended Check",
"case01" : { "case01" : {
"cont_id" : "renjuan",
"name" : "bestever.camera" "name" : "bestever.camera"
}, },
"case02" : "Check with Claims Extension",
"Case02" : "Check with Claims Extension",
"case02" : { "case02" : {
"dryrun" : true,
"cont_id" : "renjuan",
"name" : "unicycles.bike" "name" : "unicycles.bike"
},
"case03" : "Conventional / Standard / Unextended Create",
"case03" : {
"name" : "greedy.ventures"
}, },
"case04" : "DPML Create", "Case03" : "Conventional Standard Unextended Create",
"case04" : { "case03" : {
"name" : "face.dpml.zone", "cont_id" : "renjuan",
"smd-data" : "./smd/face-test.smd" "name" : "mushroomtheory.management"
}, },
"case00" : "Create another contact", "Case04" : "DPML Create",
"case00" : {
"cont_id": "renjuan3",
"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"
},
"case04" : "DPML Create",
"case04" : { "case04" : {
"name" : "secura.dpml.zone", "dryrun" : true,
"smd-data" : "./smd/secura-test.smd" "cont_id" : "renjuan",
"launch_phase" : "custom",
"name" : "face.dpml.zone",
"smd_data" : "boitedetest.smd"
}, },
"case05" : "Create with TCN Override", "Case05" : "Create with TCN Override",
"case05" : { "case05" : {
"name" : "greedy.ventures", "dryrun" : true,
"noticeID" : "", "launch_phase" : "sunrise",
"notBefore" : "", "cont_id" : "renjuan",
"acceptedDate" : "" "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"
} }