# $(BIBTEX) `basename $< .tex`
# $(LATEX) $<
# $(LATEX) $<
-#
+#
# %.ps: %.dvi
# $(DVIPS) -ta4 -o $@ $<
LBUG-Introduction.tex components.tex \
LBUG-Tools.tex logevent.tex notify.tex log_usertag.tex change_acl.tex \
LBUG-Troubleshooting.tex \
- LBUG-Appendix.tex events.tex status.tex
+ LBUG-Appendix.tex events.tex status.tex
LBAG.pdf: ${COMMON} \
LBAG.tex \
LBTP.tex \
LBTP-Abstract.tex \
LBTP-Introduction.tex \
+ LBTP-IntegrationTests.tex \
LBTP-Tests.tex \
LBTP-PerfTests.tex \
LBTP-InterTests.tex
+% when changed, update also http://egee.cesnet.cz/en/LB/lb.html (in CVS)
This test plan document explains how to test the Logging and Bookkeeping (\LB)
-service. Tests are described at six different layers, from elementary tests if
-the service is up and running, through tests of the fully supported
-functionality, performance and stress tests to interoperability tests.
+service. Two major categories of tests are described: integration tests
+(include installation, configuration and basic service ping tests) and
+system tests (basic functionality tests, performance and stress tests,
+interoperability tests and security tests).
\ No newline at end of file
--- /dev/null
+% Integration tests
+
+\section{Installation tests}
+\label{s:installation}
+\TODO{salvet: list installed packages, check all dependencies, ...}
+
+
+\newpage
+\section{Configuration tests}
+\label{s:configuration}
+\TODO{salvet: check all config files, ...}
+
+
+\newpage
+\section{Service ping tests}
+\label{s:ping}
+
+In this section we describe basic tests of \LB if the services are up and running.
+% Local tests are meant to be run on the install node (where the appropriate daemon is running)
+% whereas remote tests are meant to be run via another node.
+
+\subsection{Logger (local \& inter)}
+
+\subsubsection{Local tests}
+\what\ check if both \texttt{glite-lb-logd} and \texttt{glite-lb-interlogd} are running,
+check if \texttt{glite-lb-logd} is listnening on which port (9002 by default),
+socket-connect to \texttt{glite-lb-logd},
+check if enough disk capacity is free for \code{dglog*} files,
+socket-connect to \texttt{glite-lb-interlogd}.
+
+\how\ \ctblb{lb-test-logger-local.sh}
+
+
+\subsubsection{Remote tests}
+\req\ environment variable \texttt{GLITE\_WMS\_LOG\_DESTINATION} set, GSI credentials set
+
+\what\ network ping,
+check GSI credentials,
+socket-connect,
+gsi-connect
+
+\how\ \ctblb{lb-test-logger-remote.sh}
+
+
+\subsection{Server}
+
+\subsubsection{Local tests}
+\req\ environment variables \texttt{GLITE\_WMS\_LBPROXY\_STORE\_SOCK},
+and \texttt{GLITE\_WMS\_LBPROXY\_SERVE\_SOCK} set
+
+\what\ check MySQL (running, accessible, enough disk capacity, ...),
+check if both daemons \texttt{glite-lb-bkserverd} and \texttt{glite-lb-notif-interlogd} are running,
+check if \texttt{glite-lb-bkserverd} is listnening on which ports (9000, 9001 and 9003 by default),
+socket-connect to all \texttt{glite-lb-bkserverd} ports and sockets,
+check if enough disk capacity is free for dumps,
+socket-connect to \texttt{glite-lb-notif-interlogd}.
+
+\how\ \ctblb{lb-test-server-local.sh}
+
+
+\subsubsection{Remote tests}
+\req\ environment variable \texttt{GLITE\_WMS\_QUERY\_SERVER} set, GSI credentials set
+
+\what\ network ping,
+check GSI credentials,
+socket-connect to all server ports,
+gsi-connect to all server ports,
+WS getVersion.
+
+\how\ \ctblb{lb-test-server-remote.sh}
+
+
+
-\section{Interoperability Tests}
+\section{Interoperability tests}
+\label{s:interoperability}
+\TODO{salvet, ljocha: Test of interoperability with other grids}
-In this section we describe tests from layers 6 (interoperability tests).
-\TODO{Test for interoperability with other grids}
+\newpage
+\section{Security tests}
+\label{s:security}
+\TODO{kouril: complete security audit}
\ No newline at end of file
\section{Introduction}
-This document explains how to test the Logging and Bookkeeping (\LB) service.
+This document explains how to test the Logging and Bookkeeping (\LB) service.
As part of the EGEE-III project, Specific Service Activity SA3: Integration,
-testing and certification\footnote{\url{https://twiki.cern.ch/twiki/bin/view/EGEE/SA3}},
-testing is an essential activity and all important information about gLite software
+testing and certification\footnote{\url{https://twiki.cern.ch/twiki/bin/view/EGEE/SA3}},
+testing is an essential activity and all important information about gLite software
testing should be available from the webpage
\begin{center}
This document describes test plan for the \LB service.
-\subsection{Test Categories}
+\subsection{Test categories}
% Obsolete, not used anymore:
%
\footnote{\url{https://twiki.cern.ch/twiki/bin/view/LCG/LCGgliteTestWritingGuidelines}},
we consider two test categories with the following test types:
-\begin{description}
-\item[Integration tests] verify if the software is installable and configurable
+\begin{description}
+\item[Integration tests] verify if the software is installable and configurable.
They also check for basic, not depending on other grid services, functionality
of the component (e.g. daemon is up and running).
-\begin{enumerate}
-\item installation tests,
-\item configuration tests,
-\item service ping tests: basic tests if service is up and running.
-\end{enumerate}
+\begin{itemize}
+\item Installation tests, see Section~\ref{s:installation}
+\item Configuration tests, see Section~\ref{s:configuration}
+\item Service ping tests: basic tests if service is up and running, see Section~\ref{s:ping}
+\end{itemize}
%
\item[System tests] verify if the component works within the grid in
interaction with other grid services.
-\begin{enumerate}
-\item functionality tests of fully supported functionality (including APIs and CLI),
-\item stress tests and performance tests,
-\item interoperability tests,
-\item security tests.
-\end{enumerate}
+\begin{itemize}
+\item Functionality tests of fully supported functionality (including APIs and CLI), see Section~\ref{s:functionality}
+\item Performance and stress tests, see Section~\ref{s:perftests}
+\item Interoperability tests, see Section~\ref{s:interoperability}
+\item Security tests, see Section~\ref{s:security}
+\end{itemize}
\end{description}
The tests could be run either locally (on the install node = where the service
described in this document.
-\subsection{Tests in \texttt{org.glite.testsuites.ctb/LB}}
-\TODO{implementation}
+\subsection{Certification tests}
EGEE Certification team collects tests for \LB in a gLite module
\verb'org.glite.testsuites.ctb' in the \verb'LB' directory. All \LB tests are
described at
\url{https://twiki.cern.ch/twiki/bin/view/LCG/SAMTests#Logging_and_Bookkeeping_LB}
-as well as next to each test case in Sections \ref{s:tests} and \ref{s:perftests}.
+as well as next to each test case in the following sections.
-The tests can be used as sensors in different monitoring frameworks
+The tests can be used as sensors in different monitoring frameworks
(see also below).
the monitoring of production and pre-production grid sites. It provides a set
of probes which are submitted at regular intervals, and a database that stores
test results. In effect, SAM provides monitoring of grid services from a user
-perspective.
+perspective.
-\TODO{More about SAM. How LB is integrated - LB sensors for SAM}
+\TODO{ljocha: More about SAM. How LB is integrated - LB sensors for SAM}
-\subsubsection{Nagios}
+\subsubsection{Nagios}
Nagios\footnote{\url{http://www.nagios.org}} is a host and service monitor
designed to inform you of network problems before your clients, end-users or
managers do.
-\TODO{More about Nagios. How LB is integrated - LB sensors for Nagios?}
+\TODO{ruda: More about Nagios. How LB is integrated - LB sensors for Nagios}
\subsubsection{ETICS}
the way your software is built and tested.
Please see the ETICS User Manual \cite{etics_manual} for the description
-of the ETICS service and basic ETICS commands. The command to be issued to
+of the ETICS service and basic ETICS commands. The command to be issued to
test the whole \LB subsystem is:
\begin{verbatim}
\end{verbatim}
It can be issued locally or using the remote build and test system.
-\TODO{More about ETICS testing}
+%\TODO{More about ETICS testing?}
General ideas of \LB tests using ETICS are the following
\begin{itemize}
\item tests are in CVS together with the code
-\item tests run the service themselves on some nondefault ports and perform a set of
-elementary actions similar to those from org.glite.testsuites.ctb/LB
-to test the basic functionality of the service which is stopped again at the
+\item tests run the service themselves on some nondefault ports and perform a set of
+elementary actions similar to those from \ctblb{}\
+to test the basic functionality of the service which is stopped again at the
end of the test
-\end{itemize}
-\TODO{More about LB tests for individual modules?}
+\end{itemize}
+\TODO{More about LB tests for individual modules}
-\section{Performance and Stress Tests}
+\section{Performance and stress tests}
\label{s:perftests}
-\TODO{review, reformat, update also \url{https://meta.cesnet.cz/mediawiki/index.php/LB_and_JP_Performance_Testing}, ...}
-In this section we describe tests from layers 4 (stress tests) and 5 (performance tests).
-General idea of performance and stress tests of LB components is the following:
+\TODO{michal: nejak sesynchronizovat s webem}
+In this section we describe only the general idea of performance and stress tests of \LB components.
+This work is in progress and all necessary information is updated at the wiki page:
+
+\begin{center}
+\url{http://egee.cesnet.cz/mediawiki/index.php/LB_and_JP_Performance_Testing}
+\end{center}
+
+The general idea is thus the following:
\begin{itemize}
\item After completion test scripts print the table described for the
respective tests filled in with measured values (ie. the table
is not filled in manually by human tester).
-
- \item Measure event throughput bu
+
+ \item Measure event throughput by
\[ \mbox{event\_throughput} = \frac{1}{\mbox{time\_delivered} - \mbox{time\_arrived}} \]
\TODO{measure job throughput for event patterns of typical jobs or deduce
job throughput from throughput of selected types of events?}
\item Publish the results on the web.
-\TODO{ETICS test? \url{https://meta.cesnet.cz/mediawiki/index.php/LB_and_JP_Performance_Testing}? etc.}
+
+ \item \TODO{ETICS test framework is used to run performance and stress tests automatically.}
\end{itemize}
+
% vztahuje se k cemu?
% * only if next event is sent after previous was delivered
%
\end{itemize}
+
+
+\endinput
+
+
In the following subsections we describe performance and stress tests for
individual LB compoments. They include both tests of the isolated components
on one node (may require binaries from other components to produce/consume
%--------------------
\begin{verbatim}
-* component:
+* component:
org.glite.lb.client
-* binaries required:
+* binaries required:
logevent_libtest
* test shell script:
* test description:
- measures time required to format given events into ULM. Events
are read from file, parsed into components, timestamped and
- produced.
+ produced.
- events produced:
- by calling logging function edg_wll_LogEvent*()
d) normal operation
glite_lb_logd_perf
- no parse - LL does not parse events
+ no parse - LL does not parse events
no file - LL does not store events into files
no ipc - LL does not send events through socket to IL
- events consumed:
i) after storing into files
ii) by "empty" IL
-
+
* results:
i) events stored in files
- throughput: small big small big
- job job DAG DAG
+ throughput: small big small big
+ job job DAG DAG
-------------------------------------------------
a)
b)
ii) events sent to IL
- throughput: small big small big
- job job DAG DAG
+ throughput: small big small big
+ job job DAG DAG
-------------------------------------------------
a)
b)
- measures time the event travels through interlogger.
Interlogger is instrumented to skip some parts of eventh
processing for particular test, specifically tests include
- these variants:
+ these variants:
a) disabled event parsing. The server address
(eg. jobid) is hardcoded.
b) disabled event synchronization from files
1) events received on socket
(options 2 and 3 are not tested)
- throughput: small big small big
- job job DAG DAG
+ throughput: small big small big
+ job job DAG DAG
-------------------------------------------------
a)
b)
e)
-ii) events sent to empty bkserver
+ii) events sent to empty bkserver
1) events received on socket
- throughput: small big small big
- job job DAG DAG
+ throughput: small big small big
+ job job DAG DAG
-------------------------------------------------
a)
b)
2) events recovered from files
- throughput: small big small big
- job job DAG DAG
+ throughput: small big small big
+ job job DAG DAG
-------------------------------------------------
d)
e)
3) events synced from files, every 10th event sent on socket
- throughput: small big small big
- job job DAG DAG
+ throughput: small big small big
+ job job DAG DAG
-------------------------------------------------
a)
b)
* test description:
- measures time required for processing event by LB proxy. Test
is performed with (a)) and without (b)) checking for duplicit
- events.
+ events.
- events produced:
- stresslog sends events using the IL protokol on local
iv) after job status computation
v) normal operation
-
+
* results:
a) with duplicity check:
- throughput: small big small big
- job job DAG DAG
+ throughput: small big small big
+ job job DAG DAG
-------------------------------------------------
i)
ii)
b) without duplicity check:
- throughput: small big small big
- job job DAG DAG
+ throughput: small big small big
+ job job DAG DAG
-------------------------------------------------
i)
ii)
* test description:
- measures time required for processing event by LB server. Test
is performed with (a)) and without (b)) checking for duplicit
- events.
+ events.
- events produced:
- stresslog sends events using the IL protokol (using DoLogEventDirect())
a) with duplicity check:
- throughput: small big small big
- job job DAG DAG
+ throughput: small big small big
+ job job DAG DAG
-------------------------------------------------
i)
ii)
b) without duplicity check:
- throughput: small big small big
- job job DAG DAG
+ throughput: small big small big
+ job job DAG DAG
-------------------------------------------------
i)
ii)
glite_lb_proxy
glite_lb_bkserverd_perf_empty
glite_lb_proxy_perf_empty
-
+
* test shell script:
perftest_jobreg
a) current implementation
b) implementation of connection pool at the client
c) parallel communication with server and proxy
-
-
+
+
- events produced:
- stressreg sends registration events by calling
edg_wll_RegisterJob*()
-% - local (meant to be run on the install node) LB server ping test
-% - remote (meant to be run via another node) LB server ping test
-% - local LB logger ping test
-% - remote LB logger ping test
+% System tests
-\section{Test Cases}
-\label{s:tests}
-
-In this section we describe tests from layers 1 (service ping tests),
-2 (service functionality tests) and 3 (system tests).
-
-\TODO{completely review}
+\section{System functionality tests}
+\label{s:functionality}
+\TODO{vsichni: znovu cele projit}
+\subsection{Event delivery}
-\subsection{Tests if services are up and running}
-\TODO{how? remote vs. local tests}
-\begin{verbatim}
-org.glite.testsuites.ctb/LB/lb-l1.sh now does the following:
-- ping_host
-- check_binaries
-- check_service: runs testSocket (non GSI) on default ports for LL, IL and server
-What needs to be done:
-- how test scripts should be told to test such a service on such a (nondefualt) port?
-- test GSI credentials
-- do a GSI testSocket? hand-shake?
-- maybe call a logevent with INTERNAL msg type? -> belongs to level 2
-- move all common parts to functions.sh and write individual test scripts for each daemon:
-\end{verbatim}
+\subsubsection{Normal event delivery}
+\label{normal}
+% event delivery
+% poslat .sh, job log vrati to, co bylo ve fajlech
-\subsubsection{logger (local \& inter)}
-\TODO{
-remote: ping, check binaries on monitoring machine, check GSI credentials, gsi-connect?;
-local: check if enough disk capacity is free for dglog* files
-il: check binaries, check if enough disk capacity is free for dglog* files, socket-connect? }
+\req\ all \LB\ daemons running (\path{glite-lb-logd}, \path{glite-lb-interlogd},
+\path{glite-lb-bkserverd})
-\subsubsection{Server}
-\TODO{
-monitoring machine prerequisities: check binaries, check GSI credentials,
-remote: ping, tcp-connect, ssl-connect, WS getVersion,
-local: check MySQL (running, accessible, enough disk capacity, ...), socket-connect?, check if enough disk capacity is free for dumps?, ...
-+Notification inter-logger: jako u il}
+\what\
+\begin{enumerate}
+\item Register jobs with \code{edg\_wll\_RegsterJob}
+\item Log reasonable sequences of events with \code{edg\_wll\_Log*}, both through logger and/or proxy
+\item Check with \code{edg\_wll\_JobLog} that the events got delivered afterwards (approx. 10s).
+\end{enumerate}
+\how\ \ctblb{lb-test-normal-event-delivery.sh}
+% org.glite.testsuites.ctb/LB/lb-l2.sh now does the following:
+% - array_job_reg: registeres $JOBS_ARRAY_SIZE jobs
+% - logEvents: logs events by glite-lb-$state.sh example scripts
+% - logTags: logs user tags
+% - testLB: calls glite-lb-job_log for all jobs
+% - testLB2: calls glite-lb-job_status for all jobs
+%
+% What needs to be done:
+% - rename the script, tidy it
+% - create some meaningful sequence of events for logEvents
-\subsection{Event delivery}
+\result\ All sub tests (API calls) should return 0. The same events that were logged must be returned.
-\begin{verbatim}
-org.glite.testsuites.ctb/LB/lb-l2.sh now does the following:
-- array_job_reg: registeres $JOBS_ARRAY_SIZE jobs
-- logEvents: logs events by glite-lb-$state.sh example scripts
-- logTags: logs user tags
-- testLB: calls glite-lb-job_log for all jobs
-- testLB2: calls glite-lb-job_status for all jobs
+\begin{hints}
+\path{glite-lb-*.sh} scripts produce reasonable seqences of events, including
+the job initial registration.
-What needs to be done:
-- tidy
-- create some meaningful sequence of events for logEvents
-\end{verbatim}
+There is approx. 1 min time window in which the locallogger files exist.
+They can be grabbed and used for comparing the events later in~\ref{recover}.
+\end{hints}
-% locallogger
-% bez dalsich demonu, registrovat job, vrati EAGAIN, objevi se fajly
-\subsubsection{Standalone locallogger -- job registration}
-\TODO{registrace uz nejde pres LL}
+\subsubsection{Job registration only}
\label{reg}
-\req\ running \path{glite-lb-logd} on the test node, don't start either
-\path{glite-lb-interlogd} or \path{glite-lb-bkserverd}
+\req\ running \path{glite-lb-bkserverd}
-\how\ call \code{edg\_wll\_RegisterJob}. Jobid's should preferably point
+\what\ call \code{edg\_wll\_RegisterJob}. Jobid's should preferably point
to a~remote \LB\ server.
-\result\ The API call returns EAGAIN, but locallogger creates an event file
-in its storage.
-The file should contain single line RegJob event.
+\how\ \ctblb{lb-test-job-registration.sh}
+
+\result\ All sub tests (API calls) return 0.
\begin{hints}
\path{glite-lb-regjob} example can be used. It generates a~unique jobid,
prints it and calls \LB\ API appropriately.
\end{hints}
-% async -- prida do fajlu, OK
-% logevent
+
+
\subsubsection{Standalone locallogger -- log event}
\label{log}
-\req\ running \path{glite-lb-logd} only, files generated in test~\ref{reg}.
+% async -- prida do fajlu, OK
+% logevent
+
+\req\ running \path{glite-lb-logd} only, jobs registered in test~\ref{reg}.
-\how\ call \code{edg\_wll\_Log*} for various event types in a~sequence
+\what\ call \code{edg\_wll\_Log*} for various event types in a~sequence
resebmling real \LB\ usage, using the same jobid's as in test~\ref{reg}
-\result\ API calls return 0, events are added one per line to the locallogger files
+\how\ \ctblb{lb-test-logevent.sh}
+
+\result\ All sub tests (API calls) return 0, events are added one per line to the locallogger files.
\begin{hints}
-\path{glite-lb-logev} client program can be used.
+\path{glite-lb-logevent} client program can be used.
-\path{glite-lb-*.sh} examples may be adapted to produce reasonable seqences
-of events.
+\TODO{\path{glite-lb-*.sh} examples may be adapted to produce reasonable seqences
+of events.}
\end{hints}
+
+
\subsubsection{Interlogger recovery}
\label{recover}
-\TODO{See also org.glite.testsuites.ctb/LB/lb-l2ILR.sh.}
% recover interloggeru
% il & server (remote)
% spustit, protlaci soubory na server, soubory zmizi, lze se dotazat na stav
-\req\ running \path{glite-lb-bkserverd} on the machine and port where
-jobid's from \ref{reg} point to; files generated in~\ref{log}.
-\how\ Make a~copy of the files created in~\ref{log}, then start
+\req\ running \path{glite-lb-bkserverd} on the machine and port where
+jobid's from \ref{reg} point to; files generated in~\ref{log};
+\path{glite-lb-interlogd} is stopped.
+
+\what\ Make a~copy of the files created in~\ref{log}, then start
\path{glite-lb-interlogd}. After approx. 10s check the jobs
-with \code{edg\_wll\_JobLog} call.
+with \code{edg\_wll\_JobLog} call.
+
+\how\ \ctblb{lb-l2ILR.sh}
\result \code{edg\_wll\_JobLog} should return the same events that were
-contained in the locallogger files. The files should be removed by
+contained in the locallogger files. The files should be removed by
interlogger after approx. 1 min.
\begin{hints}
format as the locallogger files.
\end{hints}
-% event delivery
-% poslat .sh, job log vrati to, co bylo ve fajlech
-\subsubsection{Normal event delivery}
-\TODO{na zacatek sekce}
-\label{normal}
-\req\ all \LB\ daemons running (\path{glite-lb-logd}, \path{glite-lb-interlogd},
-\path{glite-lb-bkserverd}
-
-\how\
-\begin{enumerate}
-
-\item Register jobs with \code{edg\_wll\_RegsterJob}
-\item Log reasonable sequences of events with \code{edg\_wll\_Log*}.
-\item Check with \code{edg\_wll\_JobLog}
-that the events got delivered afterwards (approx. 10s).
-\end{enumerate}
-
-\result\ API calls should return 0. The same events that were logged must be returned.
-
-\begin{hints}
-\path{glite-lb-*.sh} scripts produce reasonable seqences of events, including
-the job initial registration.
-
-There is approx. 1min time window in which the locallogger files exist.
-They can be grabbed and used for comparing the events as in~\ref{recover}.
-
-\end{hints}
\subsection{Job state computation}
-\TODO{See also org.glite.testsuites.ctb/LB/lb-l2.sh above.}
-% normal event delivery & job state machine
-% .sh, dotaz na stav
\subsubsection{Normal job states}
-\TODO{projit vsechny stavy}
\label{state}
+% normal event delivery & job state machine
+% .sh, dotaz na stav
+
\req\ \path{glite-lb-bkserverd} running, events from \ref{normal} logged.
-\how\ Check state of the jobs with \code{edg\_wll\_JobStatus}.
+\what\ Check state of the jobs with \code{edg\_wll\_JobStatus}. Check all possible job states
+(if necessary, log relevant events). Query both server and/or proxy.
\result\ The API call should return 0, the jobs should be in the expected
states. Thorough tests may also cross check the values supplied in the
in the job state same as the `*' part of the script name.
\end{hints}
+
+
\subsubsection{Non-simple job states}
-\TODO{dagy, kolekce, ...}
-% specialni stav DAGu, histogram potomku
+\TODO{dags, collections, their states and states (and histogram) of their children/subjobs, ...}
+
+\subsection{LB server and proxy combined test}
+\TODO{mulac: mizeni jobu z proxy, alias kombinovany test na server-proxy}
-\subsection{LB proxy}
-\TODO{logovani pridat do Event delivery, ptani se na stavy pridat do Normal job states,
-zde resit mizeni jobu z proxy, Milos: kombinovany test na server-proxy}
\req\ running \path{glite-lb-proxy}, \path{glite-lb-interlogd} and
\path{glite-lb-bkserverd}
-\how\ Register jobs with \code{edg\_wll\_RegisterJobProxy}, log events
+\what\ Register jobs with \code{edg\_wll\_RegisterJobProxy}, log events
using \code{edg\_wll\_LogEventProxy} and check the job states against
both lbproxy (using \code{edg\_wll\_JobStatusProxy}) and bkserver
-(using \code{edg\_wll\_JobStatus}).
+(using \code{edg\_wll\_JobStatus}). Pay special attention to job reaching final
+job status and to the automatic purge from proxy - check the timeouts.
\result\ A new job state should be available immediately at the
-lbproxy and probably with a small delay also at the bkserver.
+lbproxy and probably with a small delay also at the bkserver. Jobs that reach the final job state
+are really purged from the proxy in given timeout.
\begin{hints}
There is already a script \path{test.sh} in
\end{hints}
+
\subsection{Change ACL}
-\TODO{dan: pozdeji - s novym auth. schematem. dopsat TODO jak}
+\TODO{kouril: pozdeji - s novym auth. schematem. dopsat TODO jak}
+
-\subsection{Notifications}
-\TODO{doplnit nove optiony}
-% notifikace
+
+\subsection{Notifications}
+\TODO{ruda: revize, doplnit nove optiony}
+% notifikace
% regjob, reg notifikace na vsechno, poslat udalosti, hlidat notif
+
+
+
\subsubsection{Single job, any state change}
\label{notif1}
\req\ All \LB\ services running
-\how
+\what
\begin{enumerate}
-\item Register a job.
+\item Register a job.
\item Start a~notification client (preferably on another machine),
-register with \code{edg\_wll\_NotifNew} for any state changes of the job,
+register with \code{edg\_wll\_NotifNew} for any state changes of the job,
and repeatedly invoke \code{edg\_wll\_NotifReceive}.
-\item One by one send events triggering job state change.
+\item One by one send events triggering job state change.
\end{enumerate}
\result\ All the events should trigger notification reported by the running
\path{glite-lb-notify} example can be used with its \path{test} command.
\end{hints}
+
+
\subsubsection{Additional notification criteria}
\label{notif-complex}
\req\ All \LB\ services running
\result\ Only notifications matching the criteria should be delivered.
% rozsireni dotazu o dalsi job
+
+
+
\subsubsection{Include another job}
\label{notif2}
\req\ All \LB\ services running, notification from \ref{notif1} still active
-\how\
+\how\
\begin{enumerate}
\item Register another job.
\item Augment the notification registration with the new jobid using
% pak poslat udalost, musi dojit
% uz je v predchozim implicitne
+
+
\subsubsection{Delayed delivery}
% notifikace -- zpozdene doruceni
% registrovat, odpojit, poslat udalosti, pripojit se
\req\ All \LB\ services running
-\how\
+\how\
\begin{enumerate}
\item Register another job.
\item Register a~notification as in~\ref{notif1} but terminate the client
+
\subsection{Server purge}
\TODO{ljocha, valtri: ozivit skript i text}
\textbf{WARNING: This test is destructive, it destroys ALL data in an
-existing \LB\ database.}
+existing \LB\ database.}
The test is fairly complex but it does not make too much sense to split it
artificially.
\input{LBTP-Introduction}
\newpage
+\input{LBTP-IntegrationTests}
+
+\newpage
\input{LBTP-Tests}
\newpage
\def\req{\noindent\textbf{Prerequisities:}}
\def\how{\noindent\textbf{How to run:}}
+\def\what{\noindent\textbf{What to test:}}
\def\result{\noindent\textbf{Expected result:}}
\def\path#1{{\normalfont\textsf{#1}}}
\def\code#1{\texttt{#1}}
+\def\ctblb#1{\code{org.glite.testsuites.ctb/LB/#1}}
\specialcomment{hints}{\par\noindent\textbf{Hints: }\begingroup\slshape}{\endgroup}
%\includecomment{hints}