Forum Discussion

ATokeley's avatar
ATokeley
Contributor
15 years ago

Looping through a GET request and counting node values

Hey folks, I've just written some code to firstly count the number of "journals" being returned by an endpoint. The endpoint has pagination enabled, so I'm gathering the data using multiple executions of the GET request step with a pagination offset. I then store key values in the test properties. I secondly want to confirm that the overall response includes certain values. (I index these values for my own usage later)

The code is ugly. Very damn ugly, but it works for now. I should be using a dictionary of some sort in place of those hideous if statements. Is it possible to write a dictionary to the

Any feedback would be helpful.


import java.text.*
import java.util.*

def xmlSlurper = new groovy.util.XmlSlurper()

// Get the previous total for number of journals
def journalCountProp = testRunner.testCase.getTestStepByName("Properties")
def journalCountTotal = journalCountProp.getPropertyValue( "journalCount" )
log.info " Previous JournalCount from last run: "+journalCountTotal

def lastOffsetProp = testRunner.testCase.getTestStepByName("Properties")
def lastOffsetHolder = lastOffsetProp.getPropertyValue( "offset" )
log.info " Previous offset from last run: "+lastOffsetHolder

// Get the response for a given timeline
def response = xmlSlurper.parseText(context.expand('${GET Journal using Offset#Response}'));
def currentJournalCount = response.Journals.Journal.size()
log.info " Number of Journals in this Run: "+currentJournalCount

//Getting the date from the last Journal (including an offset as the array count starts at 0)
def lastDate = response.Journals.Journal[currentJournalCount-1].JournalDate
log.info " Date from this response: "+lastDate

//Add up the Journals total for a given date.
journalCountProp.setPropertyValue("journalQueryDate", String.valueOf(lastDate))

def countJournalAsInt
def offsetCountAsInt

def accTypeBank = context.expand('${Properties#accTypeBankProp}').toInteger()
//log.info "AccountType - BANK : "+accTypeBank
def accTypeBankProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeBankTotal = accTypeBankProp.getPropertyValue( "accTypeBankProp" )

def accTypeCURRENT = context.expand('${Properties#accTypeCURRENTProp}').toInteger()
//log.info "AccountType - Current : "+accTypeCURRENT
def accTypeCURRENTProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeCURRENTTotal = accTypeCURRENTProp.getPropertyValue( "accTypeCURRENTProp" )

def accTypeCURRLIAB = context.expand('${Properties#accTypeCURRLIABProp}').toInteger()
//log.info "AccountType - CURRLIAB : "+accTypeCURRLIAB
def accTypeCURRLIABProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeCURRLIABTotal = accTypeCURRLIABProp.getPropertyValue( "accTypeCURRLIABProp" )

def accTypeDEPRECIATN = context.expand('${Properties#accTypeCURRLIABProp}').toInteger()
//log.info "AccountType - DEPRECIATN : "+accTypeDEPRECIATN
def accTypeDEPRECIATNProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeDEPRECIATNTotal = accTypeDEPRECIATNProp.getPropertyValue( "accTypeDEPRECIATNProp" )

def accTypeDIRECTCOSTS = context.expand('${Properties#accTypeCURRLIABProp}').toInteger()
//log.info "AccountType - DIRECTCOSTS : "+accTypeDIRECTCOSTS
def accTypeDIRECTCOSTSProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeDIRECTCOSTSTotal = accTypeDIRECTCOSTSProp.getPropertyValue( "accTypeDIRECTCOSTSProp" )

def accTypeEQUITY = context.expand('${Properties#accTypeEQUITYProp}').toInteger()
//log.info "AccountType - EQUITY : "+accTypeEQUITY
def accTypeEQUITYProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeEQUITYTotal = accTypeEQUITYProp.getPropertyValue( "accTypeEQUITYProp" )

def accTypeEXPENSE = context.expand('${Properties#accTypeEXPENSEProp}').toInteger()
//log.info "AccountType - EXPENSE : "+accTypeEXPENSE
def accTypeEXPENSEProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeEXPENSETotal = accTypeEXPENSEProp.getPropertyValue( "accTypeCURRLIABProp" )

def accTypeFIXED = context.expand('${Properties#accTypeFIXEDProp}').toInteger()
//log.info "AccountType - FIXED : "+accTypeFIXED
def accTypeFIXEDProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeFIXEDTotal = accTypeFIXEDProp.getPropertyValue( "accTypeFIXEDProp" )

def accTypeLIABILITY = context.expand('${Properties#accTypeLIABILITYProp}').toInteger()
//log.info "AccountType - LIABILITY : "+accTypeLIABILITY
def accTypeLIABILITYProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeLIABILITYTotal = accTypeLIABILITYProp.getPropertyValue( "accTypeLIABILITYProp" )

def accTypeOTHERINCOME = context.expand('${Properties#accTypeOTHERINCOMEProp}').toInteger()
//log.info "AccountType - OTHERINCOME : "+accTypeOTHERINCOME
def accTypeOTHERINCOMEProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeOTHERINCOMETotal = accTypeOTHERINCOMEProp.getPropertyValue( "accTypeOTHERINCOMEProp" )

def accTypeOVERHEADS = context.expand('${Properties#accTypeOVERHEADSProp}').toInteger()
//log.info "AccountType - OVERHEADS : "+accTypeOVERHEADS
def accTypeOVERHEADSProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeOVERHEADSTotal = accTypeOVERHEADSProp.getPropertyValue( "accTypeOVERHEADSProp" )

def accTypeREVENUE = context.expand('${Properties#accTypeREVENUEProp}').toInteger()
//log.info "AccountType - REVENUE : "+accTypeREVENUE
def accTypeREVENUEProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeREVENUETotal = accTypeREVENUEProp.getPropertyValue( "accTypeREVENUEProp" )

def accTypeSALES = context.expand('${Properties#accTypeSALESProp}').toInteger()
//log.info "AccountType - SALES : "+accTypeSALES
def accTypeSALESProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeSALESTotal = accTypeSALESProp.getPropertyValue( "accTypeSALESProp" )

def accTypeTERMLIAB = context.expand('${Properties#accTypeTERMLIABProp}').toInteger()
//log.info "AccountType - TERMLIAB : "+accTypeTERMLIAB
def accTypeTERMLIABProp = testRunner.testCase.getTestStepByName("Properties")
def accTypeTERMLIABTotal = accTypeTERMLIABProp.getPropertyValue( "accTypeTERMLIABProp" )

def journalLineItems = response.Journals.Journal.JournalLines

if( currentJournalCount < 100)
{
log.info " Nothing to see here - looks like we've reached the end of the journals"
//add existing total to current response total
log.info " JournalCount: "+(journalCountTotal.toInteger() + currentJournalCount.toInteger())
offsetCountAsInt =journalCountTotal.toInteger() + currentJournalCount.toInteger()
journalCountProp.setPropertyValue("journalCount",String.valueOf(offsetCountAsInt))


for (lineItem in journalLineItems.JournalLine)
{
log.info "NOTE: From <100 Loop: "+lineItem.AccountType
if (lineItem.AccountType == 'BANK')
{
accTypeBank++
accTypeBankProp.setPropertyValue("accTypeBankProp",String.valueOf(accTypeBank))
}
if (lineItem.AccountType == 'CURRENT')
{
accTypeCURRENT++
accTypeCURRENTProp.setPropertyValue("accTypeCURRENTProp",String.valueOf(accTypeCURRENT))
}
if (lineItem.AccountType == 'CURRLIAB')
{ accTypeCURRLIAB++
accTypeCURRLIABProp.setPropertyValue("accTypeCURRLIABProp",String.valueOf(accTypeCURRENT))
}
if (lineItem.AccountType == 'DEPRECIATN')
{
accTypeDEPRECIATN++
accTypeDEPRECIATNProp.setPropertyValue("accTypeDEPRECIATNProp",String.valueOf(accTypeDEPRECIATN))
}
if (lineItem.AccountType == 'DIRECTCOSTS')
{
accTypeDIRECTCOSTS++
accTypeDEPRECIATNProp.setPropertyValue("accTypeDIRECTCOSTSProp",String.valueOf(accTypeDIRECTCOSTS))
}
if (lineItem.AccountType == 'EQUITY')
{
accTypeEQUITY++
accTypeEQUITYProp.setPropertyValue("accTypeEQUITYProp",String.valueOf(accTypeEQUITY))
}
if (lineItem.AccountType == 'EXPENSE')
{
accTypeEXPENSE++
accTypeEXPENSEProp.setPropertyValue("accTypeEXPENSEProp",String.valueOf(accTypeEXPENSE))
}
if (lineItem.AccountType == 'FIXED')
{
accTypeFIXED++
accTypeFIXEDProp.setPropertyValue("accTypeFIXEDProp",String.valueOf(accTypeFIXED))
}
if (lineItem.AccountType == 'LIABILITY')
{
accTypeLIABILITY++
accTypeLIABILITYProp.setPropertyValue("accTypeLIABILITYProp",String.valueOf(accTypeLIABILITY))
}
if (lineItem.AccountType == 'OTHERINCOME')
{
accTypeOTHERINCOME++
accTypeOTHERINCOMEProp.setPropertyValue("accTypeOTHERINCOMEProp",String.valueOf(accTypeOTHERINCOME))
}
if (lineItem.AccountType == 'OVERHEADS')
{
accTypeOVERHEADS++
accTypeOVERHEADSProp.setPropertyValue("accTypeOVERHEADSProp",String.valueOf(accTypeOVERHEADS))
}
if (lineItem.AccountType == 'REVENUE')
{
accTypeREVENUE++
accTypeREVENUEProp.setPropertyValue("accTypeREVENUEProp",String.valueOf(accTypeREVENUE))
}
if (lineItem.AccountType == 'SALES')
{
accTypeSALES++
accTypeSALESProp.setPropertyValue("accTypeSALESProp",String.valueOf(accTypeSALES))
}
if (lineItem.AccountType == 'TERMLIAB')
{
accTypeTERMLIAB++
accTypeTERMLIABProp.setPropertyValue("accTypeTERMLIABProp",String.valueOf(accTypeTERMLIAB))
}

}

}
else
{
countJournalAsInt = journalCountTotal.toInteger() + currentJournalCount.toInteger()
journalCountProp.setPropertyValue("journalCount", String.valueOf(countJournalAsInt))

log.info "last offset "+lastOffsetHolder
offsetCountAsInt = lastOffsetHolder.toInteger()+100

journalCountProp.setPropertyValue("offset",String.valueOf(offsetCountAsInt))

for (lineItem in journalLineItems.JournalLine)
{
log.info "NOTE: From main loop: "+lineItem.AccountType
if (lineItem.AccountType == 'BANK')
{
accTypeBank++
accTypeBankProp.setPropertyValue("accTypeBankProp",String.valueOf(accTypeBank))
}
if (lineItem.AccountType == 'CURRENT')
{
accTypeCURRENT++
accTypeCURRENTProp.setPropertyValue("accTypeCURRENTProp",String.valueOf(accTypeCURRENT))
}
if (lineItem.AccountType == 'CURRLIAB')
{ accTypeCURRLIAB++
accTypeCURRLIABProp.setPropertyValue("accTypeCURRLIABProp",String.valueOf(accTypeCURRENT))
}
if (lineItem.AccountType == 'DEPRECIATN')
{
accTypeDEPRECIATN++
accTypeDEPRECIATNProp.setPropertyValue("accTypeDEPRECIATNProp",String.valueOf(accTypeDEPRECIATN))
}
if (lineItem.AccountType == 'DIRECTCOSTS')
{
accTypeDIRECTCOSTS++
accTypeDEPRECIATNProp.setPropertyValue("accTypeDIRECTCOSTSProp",String.valueOf(accTypeDIRECTCOSTS))
}
if (lineItem.AccountType == 'EQUITY')
{
accTypeEQUITY++
accTypeEQUITYProp.setPropertyValue("accTypeEQUITYProp",String.valueOf(accTypeEQUITY))
}
if (lineItem.AccountType == 'EXPENSE')
{
accTypeEXPENSE++
accTypeEXPENSEProp.setPropertyValue("accTypeEXPENSEProp",String.valueOf(accTypeEXPENSE))
}
if (lineItem.AccountType == 'FIXED')
{
accTypeFIXED++
accTypeFIXEDProp.setPropertyValue("accTypeFIXEDProp",String.valueOf(accTypeFIXED))
}
if (lineItem.AccountType == 'LIABILITY')
{
accTypeLIABILITY++
accTypeLIABILITYProp.setPropertyValue("accTypeLIABILITYProp",String.valueOf(accTypeLIABILITY))
}
if (lineItem.AccountType == 'OTHERINCOME')
{
accTypeOTHERINCOME++
accTypeOTHERINCOMEProp.setPropertyValue("accTypeOTHERINCOMEProp",String.valueOf(accTypeOTHERINCOME))
}
if (lineItem.AccountType == 'OVERHEADS')
{
accTypeOVERHEADS++
accTypeOVERHEADSProp.setPropertyValue("accTypeOVERHEADSProp",String.valueOf(accTypeOVERHEADS))
}
if (lineItem.AccountType == 'REVENUE')
{
accTypeREVENUE++
accTypeREVENUEProp.setPropertyValue("accTypeREVENUEProp",String.valueOf(accTypeREVENUE))
}
if (lineItem.AccountType == 'SALES')
{
accTypeSALES++
accTypeSALESProp.setPropertyValue("accTypeSALESProp",String.valueOf(accTypeSALES))
}
if (lineItem.AccountType == 'TERMLIAB')
{
accTypeTERMLIAB++
accTypeTERMLIABProp.setPropertyValue("accTypeTERMLIABProp",String.valueOf(accTypeTERMLIAB))
}


}


testRunner.gotoStepByName("GET Journal using Offset")
}
No RepliesBe the first to reply