import groovyx.net.http.HTTPBuilder import static groovyx.net.http.Method.GET import static groovyx.net.http.ContentType.TEXT import java.net.URLEncoder import RoxyTestUtils.* buildscript { dependencies { classpath 'org.codehaus.groovy.modules.http-builder:http-builder:0.7' } } plugins { id "com.marklogic.ml-gradle" version "2.6.0" } repositories { mavenCentral() } configurations { antjunit } dependencies { antjunit "org.apache.ant:ant-junit:1.10.1" } ext{ _roxyWrapper = new RoxyWrapper(rootProject) mlAppConfig{ customTokens.put("%%mlTestDB%%",mlAppName+"-test-content") customTokens.put("%%mlRoxyTestServer%%",mlAppName+"-roxy-test") if(findProperty("mlRoxyTestPort") != null) customTokens.put("%%mlRoxyTestPort%%",mlRoxyTestPort) } } ext.roxyTestList = { def http=new HTTPBuilder(_roxyWrapper.roxyTestURL() + "?func=list") http.auth.basic mlUsername,mlPassword http.request(GET,TEXT){req-> response.success = {resp,reader -> return RoxyWrapper.parseTestList(reader.text)} } } ext.roxyExecuteTest = { suiteName -> def http=new HTTPBuilder(_roxyWrapper.roxyTestURL() + "?func=run&suite="+URLEncoder.encode(suiteName,"UTF-8")+"&runsuiteteardown=true&runteardown=true") http.auth.basic mlUsername,mlPassword http.request(GET,TEXT){req-> response.success = {resp,reader -> RoxyWrapper.showTestData(reader.text,suiteName)} } http=new HTTPBuilder(_roxyWrapper.roxyTestURL() + "?func=run&suite="+URLEncoder.encode(suiteName,"UTF-8")+"&runsuiteteardown=true&runteardown=true&format=junit") http.auth.basic mlUsername,mlPassword http.request(GET,TEXT){req-> response.success = {resp,reader -> _roxyWrapper.saveTestData(reader.text,suiteName)} } } task roxyTestCode(type: RoxyTestCodeTask){ roxyWrapper = _roxyWrapper } task roxyTestConfig(type: RoxyTestConfigTask){ roxyWrapper = _roxyWrapper } task roxyTestConfigForUndeploy(type: RoxyTestConfigForUndeployTask){} task executeRoxyTests{ doLast{ def reporter = new JUnitTestReport(_roxyWrapper) if(_roxyWrapper.mlUseRoxyTestCode){ if(_roxyWrapper.mlTestRestPortSet){ def dir = new File(_roxyWrapper.testResultsDir) dir.deleteDir() dir.mkdirs() def suites = roxyTestList() for(String suite : suites) roxyExecuteTest(suite) reporter.execute() } else println "You need to set mlTestRestPort in order to use the roxy test feature - it enables the test content database" } else println "You must set mlRoxyTestPort and deploy to use this feature" } } mlDeployApp.dependsOn roxyTestConfig mlDeployApp.dependsOn roxyTestCode mlUndeploy.dependsOn roxyTestConfigForUndeploy