# # Create a new repository with a simple http test named tclsimplehttp.rxf # # # setup path and load IxLoad package # source "../setup_simple.tcl" # # Initialize IxLoad # # IxLoad connect should always be called, even for local scripts ::IxLoad connect $::IxLoadPrivate::SimpleSettings::remoteServer # once we've connected, make sure we disconnect, even if there's a problem if [catch { # # setup logger # set logtag "IxLoad-api" set logName "repnewsimplehttp" set logger [::IxLoad new ixLogger $logtag 1] set logEngine [$logger getEngine] $logEngine setLevels $::ixLogger(kLevelDebug) $::ixLogger(kLevelInfo) $logEngine setFile $logName 2 256 1 #----------------------------------------------------------------------- # Create the repository #----------------------------------------------------------------------- set repository [::IxLoad new ixRepository] #----------------------------------------------------------------------- # Get the repository chassis chain and add chassis to it #----------------------------------------------------------------------- set chassisChain [$repository cget -chassisChain] $chassisChain addChassis $::IxLoadPrivate::SimpleSettings::chassisName #----------------------------------------------------------------------- # Build client and server Network #----------------------------------------------------------------------- set clnt_network [$repository clientNetworkList.addItem \ -name "clnt_network" \ ] $clnt_network networkRangeList.appendItem \ -name "clnt_range" \ -enable 1 \ -firstIp "198.18.2.1" \ -ipIncrStep $::ixNetworkRange(kIpIncrOctetForth) \ -ipCount 100 \ -networkMask "255.255.0.0" \ -gateway "0.0.0.0" \ -firstMac "00:C6:12:02:01:00" \ -macIncrStep $::ixNetworkRange(kMacIncrOctetSixth) \ -vlanEnable 0 \ -vlanId 1 \ -mssEnable 0 \ -mss 100 $clnt_network portList.appendItem \ -chassisId 1 \ -cardId $::IxLoadPrivate::SimpleSettings::clientPort(CARD_ID)\ -portId $::IxLoadPrivate::SimpleSettings::clientPort(PORT_ID) set svr_network [$repository serverNetworkList.addItem \ -name "svr_network" \ ] $svr_network networkRangeList.appendItem \ -name "svr_range" \ -enable 1 \ -firstIp "198.18.200.1" \ -ipIncrStep $::ixNetworkRange(kIpIncrOctetForth) \ -ipCount 1 \ -networkMask "255.255.0.0" \ -gateway "0.0.0.0" \ -firstMac "00:C6:12:02:02:00" \ -macIncrStep $::ixNetworkRange(kMacIncrOctetSixth) \ -vlanEnable 0 \ -vlanId 1 \ -mssEnable 0 \ -mss 100 # Add port to server network $svr_network portList.appendItem \ -chassisId 1 \ -cardId $::IxLoadPrivate::SimpleSettings::serverPort(CARD_ID)\ -portId $::IxLoadPrivate::SimpleSettings::serverPort(PORT_ID) #----------------------------------------------------------------------- # Construct Client Traffic # The ActivityModel acts as a factory for creating agents which actually # generate the test traffic #----------------------------------------------------------------------- set clnt_traffic [$repository clientTrafficList.addItem -name "client_traffic"] $clnt_traffic agentList.appendItem \ -name "my_http_client" \ -protocol "HTTP" \ -type "Client" \ -maxSessions 3 \ -httpVersion $::HTTP_Client(kHttpVersion10) \ -keepAlive 0 \ -maxPersistentRequests 3 \ -followHttpRedirects 0 \ -enableCookieSupport 0 \ -enableHttpProxy 0 \ -enableHttpsProxy 0 \ -browserEmulation $::HTTP_Client(kBrowserTypeIE5) \ -enableSsl 0 # # Add actions to this client agent # foreach {pageObject destination} { "/4k.htm" "svr_traffic_my_http_server" "/8k.htm" "svr_traffic_my_http_server" } { $clnt_traffic agentList(0).actionList.appendItem \ -command "GET" \ -destination $destination \ -pageObject $pageObject } #----------------------------------------------------------------------- # Construct Server Traffic #----------------------------------------------------------------------- set svr_traffic [$repository serverTrafficList.addItem -name "svr_traffic"] $svr_traffic agentList.appendItem \ -name "my_http_server" \ -protocol "HTTP" \ -type "Server" \ -httpPort 80 for {set idx 0} {$idx < [$svr_traffic agentList(0).responseHeaderList.indexCount]} {incr idx} { set response [$svr_traffic agentList(0).responseHeaderList.getItem $idx] if {[$response cget -name] == "200_OK"} { set response200ok $response } if {[$response cget -name] == "404_PageNotFound"} { set response404_PageNotFound $response } } # # Clear pre-defined web pages, add new web pages # $svr_traffic agentList(0).webPageList.clear $svr_traffic agentList(0).webPageList.appendItem \ -page "/4k.html" \ -payloadType "range" \ -payloadSize "4096-4096" \ -response $response200ok $svr_traffic agentList(0).webPageList.appendItem \ -page "/8k.html" \ -payloadType "range" \ -payloadSize "8192-8192" \ -response $response404_PageNotFound #----------------------------------------------------------------------- # Create the test #----------------------------------------------------------------------- set test [$repository testList.addItem \ -name "my_test" \ -statsRequired 0 \ -enableResetPorts 0 \ ] # make it the active test (current when loaded into IxLoad) $repository config -activeTest "my_test" #----------------------------------------------------------------------- # Create a client and server mapping for the test and bind into the # network and traffic that they will be employing #----------------------------------------------------------------------- set clnt_t_n_mapping [$test clientCommunityList.appendItem \ -network $clnt_network \ -traffic $clnt_traffic \ -objectiveType $::ixObjective(kObjectiveTypeSimulatedUsers) \ -objectiveValue 20 \ -rampUpValue 5 \ -sustainTime 20 \ -rampDownTime 20 ] set svr_t_n_mapping [$test serverCommunityList.appendItem \ -network $svr_network \ -traffic $svr_traffic \ -matchClientTotalTime 1 ] $repository write -destination tclsimplehttp.rxf -overwrite 1 puts "tclsimplehttp.rxf created" #----------------------------------------------------------------------- # Cleanup #----------------------------------------------------------------------- ::IxLoad delete $repository #----------------------------------------------------------------------- # Disconnect #----------------------------------------------------------------------- }] { puts $errorInfo } # # Disconnect/Release application lock # ::IxLoad disconnect