AMGA Test Plan

Service Description

AMGA is a metadata catalogue that provides a tool to store, query and replicate metadata on the Grid. AMGA uses a database backend to store metadata and uses ODBC in order to be database implementation independent. AMGA uses Grid certificates or VOMS proxies in order to give access to grid users. After a user is authenticated to an AMGA server he/she can make queries and store metadata about anything (files, proteins, datasets etc). You can find more about AMGA here.

Testing AMGA

There are 3 levels of tests that have to be performed in order to check whether an AMGA service is working as it should.

  • 1st level: Check whether the machine that hosts the service is up and online(see Ping Test ).
  • 2nd level: Check whether the AMGA service is listening at the specified port(commonly 8822) and can do the basic interaction with a user(see Statistics Test )
  • 3rd Level: Check whether the AMGA service can publish its information through its resource BDII(see Information System Test ).
  • 4th Level: Check whether the AMGA service can authenticate a user and perform the functions that it supports(see Functional Test ).

After all those tests are performed, an administrator or a patch certifier can be sure that AMGA is working. The only test that is not yet implemented is the Information System Test.

Features/Scenarios to be tested

'Service Ping Test' (implemented)

Test Location: Ping test(Python)
Normal workflow - correct input
This test needs just the hostname of the machine that is running the service. It then test whether the specified machine responds to a simple ping test.

Pass/Fail Criteria
Pass: The machine running the service is up & running and online.
Fail: The machine running the service is not up or has a network problem.

Error workflow - erroneous input
N/A

'AMGA statistics test' (implemented)

This test checks whether the AMGA service is listening on the right port and is able to return the service's 'statistics' on demand. This is being done by sending a special query to AMGA('statistics\n\n'), and responds with an XML message file that describes the server's current status with some statistics. The original idea of the test was taken from the AMGA monitoring Page.

This test is very simple and is implemented in python.
Test Location: Statistics test(Python)

Normal workflow - correct input
The test asks the service with the 'statistics' query and the service responds with an XML file containing the server's statistics. An example output of the AMGA statistics is this:

asteriosk@andromeda:~$ telnet amga201.grid.ucy.ac.cy 8822
Trying 194.42.27.233...
Connected to amga201.grid.ucy.ac.cy.
Escape character is '^]'.
ARDA Metadata Server 1.3.0
Protocol 2
plain ssl
statistics


<Service>
  <Name>AMGA</Name>
  <Version>1.3.0</Version>
  <Data>
    <Key>MaxConnections</Key>
    <Value>50</Value>
    <Key>MaxSessions</Key>
    <Value>1024</Value>
    <Key>NodeName</Key>
    <Value></Value>
    <Key>PreparedConnections</Key>
    <Value>3</Value>
    <Key>SessionStorage</Key>
    <Value>shm</Value>
    <Key>Uptime</Key>
    <Value>4157510</Value>
    <Key>UsedConnections</Key>
    <Value>1</Value>
    <Key>UsedSessions</Key>
    <Value>0</Value>
  </Data>
</Service>

Connection closed by foreign host.
Pass/Fail Criteria
Pass: The service is listening on the right port and is able to return the statistics.
Fail: The service is not listening on the right port or is not able to return the statistics.

Error workflow - erroneous input
If the client(the test itself) sends a query other than 'statistics\n\n', the server should return an error message and close the connection.
asteriosk@andromeda:~$ telnet amga201.grid.ucy.ac.cy 8822
Trying 194.42.27.233...
Connected to amga201.grid.ucy.ac.cy.
Escape character is '^]'.
ARDA Metadata Server 1.3.0
Protocol 2
plain ssl
this is a dummy command that AMGA cannot understand

OK

201 Could not authenticate user nobody
Connection closed by foreign host.

AMGA Functional Test (implemented)

This test runs some basic functions on the AMGA server. Basic functions include creation/deletion of 'files' and 'directories' inserting/deleting attributes to them and many other AMGA commands.
Test Location: Functions test(Python)

Normal workflow - correct input
The test creates some directories and tries to enrich them with metadata and delete all of them in the end. A successful completion of all commands shows that the service is running ok.

Error workflow - erroneous input
In the case of a command failure the test exits and reports the erroneous commands.

Pass/Fail Criteria
Pass: The service can run all the specified commands.
Fail: The service fails to run any of the specified commands.

AMGA Execute SQL query Test (not implemented)

This test is going to test whether AMGA (upcoming version 2.0) can execute SQL queries to the underlying database.

Normal workflow - correct input
Given a valid SQL query the test should return whether the query was successfully executed. If the test succeeds it means that this specific functionality of AMGA is really working.

Pass/Fail Criteria
No information right now.

Error workflow - erroneous input
No information right now.

AMGA infromation system test(resource BDII entries) (not implemented)

AMGA can now publish information to the GlueSchema. This test will test whether the values that an AMGA server publishes are sane or not. To check the sanity of the values there have to be written some regulat expressions of acceptable values of the published information. Before writing a test, we have to define which of the values that are published should be non-blank and defin the "sanity" of the published values. For example, if AMGA publishes an empty string in 'GlueServiceUniqueID' then something is wrong with the information system.

Normal workflow - correct input
Given a valid ldapsearch query, the test asks AMGA's information system(resource BDII) for some specific values. The BDII responds with some values that are sane.

An example of sane response from a server is the following:

asteriosk@andromeda:~$ ldapsearch -x -H ldap://amga201.grid.ucy.ac.cy:2170 -b mds-vo-name=resource,o=grid
version: 2

#
# filter: (objectclass=*)
# requesting: ALL
#

# resource, grid
dn: Mds-Vo-name=resource,o=grid
objectClass: GlueTop
objectClass: Mds
Mds-Vo-name: resource

# amga201.grid.ucy.ac.cy_org.glite.AMGA_677045933, resource, grid
dn: GlueServiceUniqueID=amga201.grid.ucy.ac.cy_org.glite.AMGA_677045933,Mds-Vo
 -name=resource,o=grid
objectClass: GlueTop
objectClass: GlueService
objectClass: GlueKey
objectClass: GlueSchemaVersion
GlueServiceUniqueID: amga201.grid.ucy.ac.cy_org.glite.AMGA_677045933
GlueServiceName: CY-02-CYGRID-CERT-AMGA
GlueServiceType: org.glite.AMGA
GlueServiceVersion: 2.0.0
GlueServiceEndpoint: amga://amga201.grid.ucy.ac.cy:8822/
GlueServiceStatus: OK
GlueServiceStatusInfo: GLITE_LOCATION not set, assuming /opt/glite GLITE_LOCAT
 ION_VAR not set, assuming /var/opt/glite amgad (pid 31412 31410 31408) is run
 ning...
GlueServiceSemantics: https://twiki.cern.ch/twiki/bin/view/EGEE/GliteAMGA
GlueServiceStartTime: 2008-11-03T17:36:46+02:00
GlueServiceOwner: geclipse
GlueServiceOwner: ops
GlueServiceOwner: dteam
GlueServiceOwner: see
GlueServiceAccessControlBaseRule: VO:geclipse
GlueServiceAccessControlBaseRule: VO:ops
GlueServiceAccessControlBaseRule: VO:dteam
GlueServiceAccessControlBaseRule: VO:see
GlueServiceAccessControlRule: geclipse
GlueServiceAccessControlRule: ops
GlueServiceAccessControlRule: dteam
GlueServiceAccessControlRule: see
GlueForeignKey: GlueSiteUniqueID=CY-02-CYGRID-CERT
GlueSchemaVersionMajor: 1
GlueSchemaVersionMinor: 3

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2


Pass/Fail Criteria
Pass: All examined values are sane
Fail: Any of the examined values is not sane

Error workflow - erroneous input
N/A

Features not to be tested

  • Data replication from 'AMGA Master' to 'AMGA Slaves'

-- AsteriosKatsifodimos - 04 Mar 2009

Edit | Attach | Watch | Print version | History: r5 < r4 < r3 < r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r5 - 2009-11-05 - unknown
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    EGEE All webs login

This site is powered by the TWiki collaboration platform Powered by Perl This site is powered by the TWiki collaboration platformCopyright & by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Ask a support question or Send feedback