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">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1489137557">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1489137557" moduleId="org.eclipse.cdt.core.settings" name="Default">
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1217424711">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1217424711" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
@ -16,27 +16,27 @@
</extensions>
</storageModule>
<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">
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1489137557.45876174" name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1604623789" 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"/>
<builder id="cdt.managedbuild.target.gnu.builder.base.1594561920" 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.cpp.compiler.base.637187500" 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"/>
<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.1217424711.856785893" name="/" resourcePath="">
<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.1993697899" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.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.1200271753" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.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.1234249186" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1814883119" 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"/>
<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.1808159100" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</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.cpp.linker.base.1048700328" 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">
<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.138368163" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
<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="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.assembler.base.264833315" 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"/>
<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.223635164" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
@ -45,19 +45,19 @@
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="git.null.364140434" name="git"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</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="refreshScope"/>
<storageModule moduleId="org.eclipse.cdt.make.core.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>
<buildTarget>libACTK1_0.so</buildTarget>
<buildArguments/>
<buildTarget>all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
@ -70,44 +70,23 @@
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</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>
<buildTarget>tests</buildTarget>
<buildArguments/>
<buildTarget>dclean</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="dirs" path="ACTK1_0" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments/>
<buildTarget>dirs</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="dclean" path="ACTK1_0" 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">
<target name="clean" path="AusRegCliever" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments/>
<buildTarget>clean</buildTarget>
@ -115,96 +94,14 @@
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</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>
<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>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</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">
<buildCommand>make</buildCommand>
<buildArguments/>
@ -213,27 +110,19 @@
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</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>
<buildTarget>clean</buildTarget>
<stopOnError>false</stopOnError>
<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>
<buildArguments/>
<buildTarget>all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
</buildTargets>
</storageModule>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Default">
<resource resourceType="PROJECT" workspacePath="/DNSEPPUS"/>
</configuration>
</storageModule>
</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 \
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)

View File

@ -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

View File

@ -19,13 +19,15 @@ class LPCrtCmdExtension : public CommandExtension
void setNoticeID(string &idVal,string &notAftVal, 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+");

View File

@ -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

View File

@ -8,220 +8,334 @@
#ifndef REGISTRYOTE_H_
#define REGISTRYOTB_H_
typedef auto_ptr<SessionManager> AC_SESSMGR;
typedef auto_ptr<Session> 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<std::string>
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<std::string> tech(1,std::string("renjuan") );
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") );;
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 <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())
{
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);
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 <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, 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 <ContactCreateCommand , ContactCreateResponse, CommandExtension, ResponseExtension > *txq;
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);
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 <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, 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 <DomainTransferRequestCommand , DomainTransferResponse, CommandExtension, ResponseExtension > *txq;
txq = new TxQ<DomainTransferRequestCommand , DomainTransferResponse, CommandExtension, ResponseExtension>
(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<Session> 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());
}

View File

@ -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;

View File

@ -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<int,testCase> testCases;
typedef std::map<string,caseBody> testFuncs;
typedef std::map<int,testDesc> testDescs;
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
#define MD_COMMON
#define ACTK_CFG_PATH "./etc/toolkit2.conf"

View File

@ -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;

View File

@ -24,17 +24,214 @@
#include <errno.h>
#include <sys/types.h>
#include <sys/inotify.h>
#include <sys/stat.h>
#include <json/json.h>
#include <type_traits>
#include <boost/static_assert.hpp>
#include <boost/type_traits.hpp>
#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<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;
@ -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 =
"<?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"
@ -89,7 +269,7 @@ void ausRegEPPTK::doOTEA()
try {
Timer::setTime("20140101.010101");
auto_ptr<SessionManager> manager(SessionManagerFactory::newInstance(&props));
auto_ptr<Session> sess(SessionFactory::newInstance(&props));
auto_ptr<Session> 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<SessionManager> manager(SessionManagerFactory::newInstance(&props));
auto_ptr<Session> sess(SessionFactory::newInstance(&props));
auto_ptr<Session> 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();

View File

@ -9,19 +9,21 @@
#include <algorithm> // sort
#include <json/json.h>
#include <stdio.h>
#include <execinfo.h>
#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;i<ACPRODINOTE::theseCases.size();i++) { ACPRODINOTE::thisCase = i;
ACPRODINOTE::cmd = 0;
ACPRODINOTE::theseParms = suite.get(parms[i],root);
try{
theseLogs->logN(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.
}

View File

@ -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"
}