{"revision":"c10276e953456835cdbb1f3a60d58ae1980be353","document":{"id":1082,"path":"api-reference/server-api-reference/c_OCTimerAPI.md","title":"OCTimer - Global","bundle":null,"doc_type":null,"release":"australia","body":"\n# OCTimer- Global\n\nThe OCTimer script include provides methods to track the length of time it takes for a function to complete.\n\nThis script include requires the On-Call Scheduling \\(com.snc.on\\_call\\_rotation\\) plugin to be activated. For more information, refer to the topic [Activate On-Call Scheduling](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/it-service-management/t_ActivateOnCallScheduling.md).\n\n**Parent Topic:**[Server API reference](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/server-api-reference/api-server.md)\n\n## OCTimer - log \\(String name, String entry\\)\n\nLogs the entry based on the function name.\n\n|Name|Type|Description|\n|----|----|-----------|\n|name|String|Function name.|\n|entry|String|Text that will be part of the output in the log.|\n\n|Type|Description|\n|----|-----------|\n|void| |\n\n## OCTimer - millisToTime \\(Integer millis\\)\n\nTakes a millisecond value and returns a formatted duration.\n\n|Name|Type|Description|\n|----|----|-----------|\n|millis|Integer|Duration in miliseconds.|\n\n|Type|Description|\n|----|-----------|\n|String|A formatted duration.|\n\n## OCTimer - result \\(\\)\n\nCalculates the time taken for each function registered.\n\n|Name|Type|Description|\n|----|----|-----------|\n|None| | |\n\n|Type|Description|\n|----|-----------|\n|String|Time taken for each function registered.|\n\nThe following code example benchmarks the time taken by a REST API to fetch IP addresses from devices in Network Gear and then inserts them into IP Address table. API calls may require some time to process, so it is advisable to benchmark execution time before executing them in production.\n\n```\nvar user = \"<user name>\"; // ServiceNow login user name\nvar password = \"<password>\";  // ServiceNow login password\nvar instance = \"<instance name>\";   // ServiceNow instance name\n\n// Insert new IP address to IP address table using REST API\nfunction insertIPAddress(ip_address) {\n var request = new sn_ws.RESTMessageV2();\n request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_ip_address');\n request.setHttpMethod('POST');\n\n request.setBasicAuth(user,password);\n request.setRequestHeader(\"Accept\",\"application/json\");\n request.setRequestHeader('Content-Type','application/json');request.setRequestBody(\"{\\\"ip_address\\\":\\\"\" + ip_address + \"\\\"}\");\n var response = request.execute();\n}\n\n// Retrieve IP address from devices in Network gear\nfunction getIPAddresses() {\n var request = new sn_ws.RESTMessageV2();\n request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_netgear?sysparm_fields=ip_address');\n request.setHttpMethod('GET');\n\n request.setBasicAuth(user,password);\n request.setRequestHeader(\"Accept\",\"application/json\");\n\n var response = request.execute();\n return response.getBody();\n}\n\nvar timer = new OCTimer();             // create OCTimer object\n\n// get the IP addresses from Network Gear table\ntimer.start(\"getIPAddresses\");         // start timer to time fetching IP addresses from Network Gear table\nvar ipAddressStr = getIPAddresses();\ntimer.stop('getIPAddresses');          // stop timer\n\n// insert IP addresses to IP Address table\nvar ipAddressJson = JSON.parse(ipAddressStr);  // parse result\nvar ipAddressList = ipAddressJson.result;      // extract IP addresses to a list\nfor (var i=0; i<ipAddressList.length;i++) {    // loop through\n var ip_address = ipAddressList[i][\"ip_address\"].trim();\n if (ip_address.length > 0) {\n  timer.start(\"insertIPAddress\");    // start timer to time inserting IP address to IP Address table\n  insertIPAddress(ip_address);       // insert IP address\n  timer.stop('insertIPAddress');     // end timer\n }\n}\n\nvar result = timer.result();         // get timer results\ngs.info(result);                     // output timer result\n\n```\n\nOutput:\n\n```\ngetIPAddresses method was invoked 1 time and took 00.288 seconds\ninsertIPAddress method was invoked 37 times and took 02.352 seconds\n```\n\n## OCTimer - start \\(String name\\)\n\nInitializes a timer based on the name provided.\n\n|Name|Type|Description|\n|----|----|-----------|\n|name|String|Function name.|\n\n|Type|Description|\n|----|-----------|\n|void| |\n\nThe following code example benchmarks the time taken by a REST API to fetch IP addresses from devices in Network Gear and then inserts them into IP Address table. API calls may require some time to process, so it is advisable to benchmark execution time before executing them in production.\n\n```\nvar user = \"<user name>\"; // ServiceNow login user name\nvar password = \"<password>\";  // ServiceNow login password\nvar instance = \"<instance name>\";   // ServiceNow instance name\n\n// Insert new IP address to IP address table using REST API\nfunction insertIPAddress(ip_address) {\n var request = new sn_ws.RESTMessageV2();\n request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_ip_address');\n request.setHttpMethod('POST');\n\n request.setBasicAuth(user,password);\n request.setRequestHeader(\"Accept\",\"application/json\");\n request.setRequestHeader('Content-Type','application/json');request.setRequestBody(\"{\\\"ip_address\\\":\\\"\" + ip_address + \"\\\"}\");\n var response = request.execute();\n}\n\n// Retrieve IP address from devices in Network gear\nfunction getIPAddresses() {\n var request = new sn_ws.RESTMessageV2();\n request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_netgear?sysparm_fields=ip_address');\n request.setHttpMethod('GET');\n\n request.setBasicAuth(user,password);\n request.setRequestHeader(\"Accept\",\"application/json\");\n\n var response = request.execute();\n return response.getBody();\n}\n\nvar timer = new OCTimer();             // create OCTimer object\n\n// get the IP addresses from Network Gear table\ntimer.start(\"getIPAddresses\");         // start timer to time fetching IP addresses from Network Gear table\nvar ipAddressStr = getIPAddresses();\ntimer.stop('getIPAddresses');          // stop timer\n\n// insert IP addresses to IP Address table\nvar ipAddressJson = JSON.parse(ipAddressStr);  // parse result\nvar ipAddressList = ipAddressJson.result;      // extract IP addresses to a list\nfor (var i=0; i<ipAddressList.length;i++) {    // loop through\n var ip_address = ipAddressList[i][\"ip_address\"].trim();\n if (ip_address.length > 0) {\n  timer.start(\"insertIPAddress\");    // start timer to time inserting IP address to IP Address table\n  insertIPAddress(ip_address);       // insert IP address\n  timer.stop('insertIPAddress');     // end timer\n }\n}\n\nvar result = timer.result();         // get timer results\ngs.info(result);                     // output timer result\n\n```\n\nOutput:\n\n```\ngetIPAddresses method was invoked 1 time and took 00.288 seconds\ninsertIPAddress method was invoked 37 times and took 02.352 seconds\n```\n\n## OCTimer - stop \\(String name\\)\n\nRegisters the end of the timer for the provided name.\n\n|Name|Type|Description|\n|----|----|-----------|\n|name|String|Function name.|\n\n|Type|Description|\n|----|-----------|\n|void| |\n\nThe following code example benchmarks the time taken by a REST API to fetch IP addresses from devices in Network Gear and then inserts them into IP Address table. API calls may require some time to process, so it is advisable to benchmark execution time before executing them in production.\n\n```\nvar user = \"<user name>\"; // ServiceNow login user name\nvar password = \"<password>\";  // ServiceNow login password\nvar instance = \"<instance name>\";   // ServiceNow instance name\n\n// Insert new IP address to IP address table using REST API\nfunction insertIPAddress(ip_address) {\n var request = new sn_ws.RESTMessageV2();\n request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_ip_address');\n request.setHttpMethod('POST');\n\n request.setBasicAuth(user,password);\n request.setRequestHeader(\"Accept\",\"application/json\");\n request.setRequestHeader('Content-Type','application/json');request.setRequestBody(\"{\\\"ip_address\\\":\\\"\" + ip_address + \"\\\"}\");\n var response = request.execute();\n}\n\n// Retrieve IP address from devices in Network gear\nfunction getIPAddresses() {\n var request = new sn_ws.RESTMessageV2();\n request.setEndpoint('https://' + instance + '.service-now.com/api/now/table/cmdb_ci_netgear?sysparm_fields=ip_address');\n request.setHttpMethod('GET');\n\n request.setBasicAuth(user,password);\n request.setRequestHeader(\"Accept\",\"application/json\");\n\n var response = request.execute();\n return response.getBody();\n}\n\nvar timer = new OCTimer();             // create OCTimer object\n\n// get the IP addresses from Network Gear table\ntimer.start(\"getIPAddresses\");         // start timer to time fetching IP addresses from Network Gear table\nvar ipAddressStr = getIPAddresses();\ntimer.stop('getIPAddresses');          // stop timer\n\n// insert IP addresses to IP Address table\nvar ipAddressJson = JSON.parse(ipAddressStr);  // parse result\nvar ipAddressList = ipAddressJson.result;      // extract IP addresses to a list\nfor (var i=0; i<ipAddressList.length;i++) {    // loop through\n var ip_address = ipAddressList[i][\"ip_address\"].trim();\n if (ip_address.length > 0) {\n  timer.start(\"insertIPAddress\");    // start timer to time inserting IP address to IP Address table\n  insertIPAddress(ip_address);       // insert IP address\n  timer.stop('insertIPAddress');     // end timer\n }\n}\n\nvar result = timer.result();         // get timer results\ngs.info(result);                     // output timer result\n\n```\n\nOutput:\n\n```\ngetIPAddresses method was invoked 1 time and took 00.288 seconds\ninsertIPAddress method was invoked 37 times and took 02.352 seconds\n```\n\n"}}