Web API vianmääritys- ja testausesimerkkejä
Web API vianmääritys- ja testausesimerkkejä
Vianmääritys
Loki-tiedostot
Lokit löytyvät ESM-käyttöliittymästä kohdasta Hallinta Ylläpito Lokit. Täältä voit ladata lokit, tarkastella lokeja selaimessa ja tarkistaa, kuinka monta avointa istuntoa on eri lokien katselua varten. Verkkosovellusliittymän API virheenkorjaukseen on olemassa kolme lokia:
- DataCardImport-komennolle com.bitmount.equipment.importing.ValidatingEntityXMLImporter
- Hakua varten com.efecte.webservice.SearchController
- EQL kyselyille com.efecte.persistence.search.eql.EqlEngine
Lokitiedostoista voit tarkastella käyttöoikeusvirheitä ja tarkempia EQL poikkeusten virheitä.
API ei palauta mitään datakortteja
Web API ei palauta yhtään datakorttia, vaikka kyselyni pohjalle on luotu datakortteja.
Tämä voi olla käyttöoikeusongelma. Jos web-rajapinnan käyttäjällä ei ole mallipohjan käyttöoikeuksia tiettyyn mallipohjaan, search.ws ei voi palauttaa datakortteja.
Hakeminen olemattomalla attribuuttikoodilla
Jos search.ws-funktiota käytetään ilman olemassa olevaa attribuuttikoodia, esim. $nam$ $name$:n sijaan, web- API voi antaa seuraavan vastauksen:
<?xml version="1.0" encoding="utf-8"?>
<error>
<code>efe-3001</code>
<description>Invalid search query</description>
<details>Macros should be preprocessed, not converted to HQL: $nam$</details>
</error>Tämä tarkoittaa, että attribuuttikoodia $nam$ ei ole olemassa mallipohjassa.
WHERE-lausekkeessa kirjoitusvirheitä sisältävien datakorttien etsiminen
Search.ws ei palauta datakortteja tai virheitä, jos WHERE-lausekkeen attribuuttikoodissa on kirjoitusvirhe. Esimerkiksi kyselysi pitäisi olla “WHERE $ efecte_id $ = 'INC-000259'”, mutta kyselyssä “select entity from entity where template.code='incident' AND $ efectei $='INC-000259'” on väärin kirjoitettu attribuutti.
Tämä antaa tyhjän vastauksen ilman virheitä, koska mikään ei vastaa WHERE-ehtoa.
DataCardImport-virheet
<?xml version="1.0" encoding="utf-8"?>
<entity-import-report>
<start-time>04.09.2018 09:43:38</start-time>
<total-time>0,294</total-time>
<entities-handled-per-second>3,401</entities-handled-per-second>
<average-entity-handling-time>0,294</average-entity-handling-time>
<user>webapi</user>
<entities-handled>1</entities-handled>
<entities-saved>0</entities-saved>
<entities-updated>0</entities-updated>
<entities-created>0</entities-created>
<template-errors>
<template-error code="workstation">Ignoring entity</template-error>
</template-errors>
</entity-import-report>Tämä voi johtua myös mallineen käyttöoikeuksien puutteesta. Tarkista kohdasta Hallinta -> käyttöoikeudet, että web-rapi-roolilla on oikeus luoda datakortteja mallineelle.
Testausesimerkkejä
Web API pyyntöjen testaus onnistuu helposti Browserilla tai Curlilla. Browserissa on helppo testata search.ws-pyyntöjä, varsinkin jos selain pystyy käsittelemään XML:ää.
Testaaminen selaimella
Testataksesi search.ws-tiedostoa selaimessa, lisää /search.ws ESM-instanssin perus-URL-osoitteen jälkeen. Alla on kuva selaimen testausesimerkistä, jossa on seuraava URL-osoite:
https://localhost:8080/esm/search.ws?attributeCodes=efecte_id,subject,description,status&query=select%20entity%20from%20entity%20where%20template.code=%27incident%27

Testaus Curlin avulla
Yksi vaihtoehto web- API testaamiseen on curl. Alla on esimerkki curl-komennosta, joka suorittaa saman kyselyn kuin selainesimerkki.
curl -X GET -u "webapi:Apitest" -L https://localhost:8080/esm/search.ws?attributeCodes=efecte_id,subject,destus&query=select%20entity%20from%20entity%20where%20template.code=%27incident%27Esimerkkivastaus alla:
<?xml version="1.0" encoding="UTF-8" ?>
<entityset>
<entity id="19406" name="Test incident2">
<template id="2597" name="Incident" code="incident"/>
<group code="incident_management"/>
<attribute id="2612" name="Incident ID" code="efecte_id">
<value>INC-000278</value>
</attribute>
<attribute id="2623" name="Status" code="status">
<value>1 - Untouched</value>
</attribute>
<attribute id="2632" name="Subject" code="subject">
<value>Test incident2</value>
</attribute>
</entity>
</entityset>Datakorttien tuonti toimii samalla tavalla, tässä esimerkissä tapahtuman XML on importdata.xml-tiedostossa:
curl -X POST -H "Content-Type: application/xml" -d @importdata.xml -u "webapi:Apitest" -L https://localhost:8080/esm/dataCardImport.ws?folderCode=incident_managementVastauksen pitäisi olla jotain alla olevan esimerkin kaltaista:
<?xml version="1.0" encoding="utf-8"?>
<entity-import-report>
<start-time>14.09.2018 10:44:48</start-time>
<total-time>0,378</total-time>
<entities-handled-per-second>2,646</entities-handled-per-second>
<average-entity-handling-time>0,378</average-entity-handling-time>
<user>webapi</user>
<entities-handled>1</entities-handled>
<entities-saved>1</entities-saved>
<entities-updated>0</entities-updated>
<entities-created>1</entities-created>
</entity-import-report>
Table of Contents