import groovy.io.FileType
import groovy.json.*
import groovy.time.TimeCategory

def returnCode = 0
Exception eThrow = null
try {
    initialize(args)
} catch (Exception e) {
    eThrow = e
    returnCode = 1
}
if (eThrow == null) {
    return 0
}
else {
    throw eThrow
    return 1
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////// SCRIPT /////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////
def initialize(args3) {   //
    def executor = new TestExecutor(args3)
    return executor
}

class TestExecutor {

    public TestExecutor(args2) {
        this.testExternalGlobalProps()
    }

    public testExternalGlobalProps() {
        Utils.printlnLog('########## testExternalGlobalProps')
        def globalKeyName = new Random().with { (1..9).collect { (('a'..'z')).join()[ nextInt((('a'..'z')).join().length())] }.join() }
        Utils.printlnLog("Generated random key: ${globalKeyName}")
        Utils.setExternalValue(globalKeyName , 'lelama' , 'nul')
        def storedValue = Utils.getExternalValue(globalKeyName , 'lelama')
        assert storedValue == 'nul' , 'Error in global prop key storage/ retrieval (1)'
        Utils.setExternalValue(globalKeyName , 'lelama2' , 'nul2')
        def storedValue2 = Utils.getExternalValue(globalKeyName , 'lelama2')
        assert storedValue2 == 'nul2' , 'Error in global prop key storage/ retrieval (2)'
        def storedValueBack = Utils.getExternalValue(globalKeyName , 'lelama')
        assert storedValueBack == 'nul' , 'Error in global prop key storage/ retrieval (3)'
        Utils.printlnLog(Utils.getExternalValue(globalKeyName))
    }

}
