DELETED daemon.scm Index: daemon.scm ================================================================== --- daemon.scm +++ /dev/null @@ -1,45 +0,0 @@ -;; Taken from the chicken 3.x daemon egg -;; -;; Copyright (c) 2007 Hans Bulfone -;; All rights reserved. -;; -;; Redistribution and use in source and binary forms, with or without -;; modification, are permitted provided that the following conditions are met: -;; -;; * Redistributions of source code must retain the above copyright notice, -;; this list of conditions and the following disclaimer. -;; * Redistributions in binary form must reproduce the above copyright -;; notice, this list of conditions and the following disclaimer in the -;; documentation and/or other materials provided with the distribution. -;; * Neither the name of the author nor the names of his contributors may -;; be used to endorse or promote products derived from this software -;; without specific prior written permission. -;; -;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -;; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -;; THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -;; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -;; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -;; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -;; ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -(declare (unit daemon)) - -(define (daemon:ize) - (change-directory "/") - (let ((fd-r (file-open "/dev/null" open/rdonly)) - (fd-w (file-open "/dev/null" open/wronly))) - (duplicate-fileno fd-r 0) - (duplicate-fileno fd-w 1) - (file-close fd-r) - (file-close fd-w)) - (let ((child-pid (process-fork))) - (if (not (zero? child-pid)) - (exit 0))) - (create-session) - (duplicate-fileno 1 2) - (void)) DELETED docs/api.html Index: docs/api.html ================================================================== --- docs/api.html +++ /dev/null @@ -1,1024 +0,0 @@ - - - - - -Megatest Web App API Specificiation - - - - - -
-
-
-

Megatest Web App

-
    -
  1. -

    -See runs -

    -
  2. -
  3. -

    -Manage jobs -

    -
  4. -
  5. -

    -Debug -

    -
  6. -
-
-
-
-

Example Abstract

-
-

The Megatest Web App aims to make as much of the power of the dashboard available to the web based user.

-
-
-
-

1. Common

-
-

This is an example endpoint. You will need to use your own cgi server to serve out your megatest runs.

- -
-

1.1. Error format response

-

All API errors are returned in the following format:

-
-
-

{ "error" : "Error message" }

-
-
-
-

1.2. Get List of Runs

-

URL: <base>/runs

-

Method: GET

-

Filter Params: target, testpatt, offset, limit

-

Megatest Cmd: megatest -start-dir <path to megatest area> -list-runs % -target % -dumpmode json -fields runs:runname,id+tests:state,status:id

-

Response:

-
-
-

[ - { - "run_id" : "1", - "name" : "runname1", - "target" : "target1", - "tests" : - [ - "test": - [ - {"id": 1, "name":test1, "item_path": "", "shortdir": "/temp/foo/bar/target1/runname1/test1", "final_logf": "megatest-rollup-test1.html", "status": "PASS#"} - {"id": 2, "name":test2, "item_path": "", "shortdir": "/temp/foo/bar/target1/runname1/test2", "final_logf": "megatest-rollup-test2.html", "status": "PASS"} - {"id": 3, "name":test3, "item_path": "", "shortdir": "/temp/foo/bar/target1/runname1/test3", "final_logf": "megatest-rollup-test3.html", "status": "PASS"} - ] - ] - }, - { - "run_id" : "2", - "name" : "runname2", - "target" : "target2", - "tests" : - [ - "test: - [ - {"id": 4, "name":[blue]test1, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test1", "final_logf": "megatest-rollup-test1.html", "status": "PASS"} - {"id": 5, "name":[blue]test2, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test2", "final_logf": "megatest-rollup-test2.html", "status": "FAIL"} - {"id": 6, "name":test3, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test3", "final_logf": "megatest-rollup-test3.html", "status": "PASS"} - ] - ] - } -]

-
-
-
-

1.3. Trigger a new Run

-

URL: <base>/runs

-

Method: POST

-

Megatest Cmd: megatest -runtests % -target <target> :runname <run_name> -run

-

Request Params:

-
-
-

{"target": "target_value", "runname" : "runname", "test_pattern": "optional test pattern"}

-
-

Response:

-

If Error

-
-
-

{ "error" : "Error message" }

-
-

If Success returns the results of the run

-
-
-

[ - { - "run_id" : "2", - "name" : "runname2", - "target" : "target2", - "tests" : - [ - "test: - [ - {"id": 4, "name":[blue]test1, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test1", "final_logf": "megatest-rollup-test1.html", "status": "PASS"} - {"id": 5, "name":[blue]test2, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test2", "final_logf": "megatest-rollup-test2.html", "status": "FAIL"} - {"id": 6, "name":test3, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test3", "final_logf": "megatest-rollup-test3.html", "status": "PASS"} - ] - ] - } -]

-
-
-
-

1.4. Get perticular Run

-

URL: <base>/runs/:id

-

Method: GET

-

Filter Params: testpatt

-

Megatest Cmd: megatest -start-dir <path to megatest area> -list-runs <runname> -target % -dumpmode json -fields runs:runname,id+tests:state,status:id

-

Response:

-
-
-

[ - { - "run_id" : "2", - "name" : "runname2", - "target" : "target2", - "tests" : - [ - "test": - [ - {"id": 4, "name":[blue]test1, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test1", "final_logf": "megatest-rollup-test1.html", "status": "PASS"} - {"id": 5, "name":[blue]test2, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test2", "final_logf": "megatest-rollup-test2.html", "status": "FAIL"} - {"id": 6, "name":test3, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test3", "final_logf": "megatest-rollup-test3.html", "status": "PASS"} - ] - ] - } -]

-
-
-
-

1.5. Re-execute a run

-

URL: <base>/runs/:id

-

Method: PUT/PATCH

-

Request Params: {"testpatt" : "pattern"}

-

Response:

-
-
-

[ - { - "run_id" : "2", - "name" : "runname2", - "target" : "target2", - "tests" : - [ - "test": - [ - {"id": 4, "name":[blue]test1, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test1", "final_logf": "megatest-rollup-test1.html", "status": "PASS"} - {"id": 5, "name":[blue]test2, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test2", "final_logf": "megatest-rollup-test2.html", "status": "FAIL"} - {"id": 6, "name":test3, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test3", "final_logf": "megatest-rollup-test3.html", "status": "PASS"} - ] - ] - } -]

-
-
-
-

1.6. Get List of tests within a run

-

URL: <base>/runs/:id/tests

-

Method: GET

-

Megatest Cmd: megatest -start-dir <path to megatest area> -list-runs <runname> -target % -dumpmode json -fields runs:runname,id+tests:state,status:id

-

Response:

-
-
-

[ - "tests" : - [ - {"id": 4, "name":[blue]test1, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test1", "final_logf": "megatest-rollup-test1.html", "status": "PASS"} - {"id": 5, "name":[blue]test2, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test2", "final_logf": "megatest-rollup-test2.html", "status": "FAIL"} - {"id": 6, "name":test3, "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test3", "final_logf": "megatest-rollup-test3.html", "status": "PASS"} - ] -]

-
-
-
-

1.7. Re-execute a test within a run

-

URL: <base>/runs/:id/tests/:id

-

Method: PUT/PATCH

-

Response:

-
-
-

{"id": "4", "name":"test1", "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test1", "final_logf": "megatest-rollup-test1.html", "status": "PASS"}

-
-
-
-

1.8. Get perticular test that belongs to a Runs

-

URL: <base>/runs/:id/tests/:id

-

Method: GET

-

Megatest Cmd: megatest -start-dir <path to megatest area> -list-runs <runname> -target % -testpattern <pattern> -dumpmode json -fields runs:runname,id+tests:state,status:id

-

Response:

-
-
-

{"id": "4", "name":"test1", "item_path": "", "shortdir": "/temp/foo/bar/target2/runname2/test1", "final_logf": "megatest-rollup-test1.html", "status": "PASS"}

-
-
-
-
-
-

2. Notes

-
-

Misc …

-
    -
  1. -

    -blah -

    -
  2. -
  3. -

    -baz -

    -
  4. -
-
-
-
-

- - - DELETED docs/megatest.lyx Index: docs/megatest.lyx ================================================================== --- docs/megatest.lyx +++ /dev/null @@ -1,4102 +0,0 @@ -#LyX 2.0 created this file. For more info see http://www.lyx.org/ -\lyxformat 413 -\begin_document -\begin_header -\textclass article -\begin_preamble -% Include the proper LaTeX packages: -%---------------------------------------------------------------------------------------------------- -\usepackage{graphicx} -\usepackage{titling} -\usepackage{ifthen} -\usepackage[absolute]{textpos} -\usepackage[colorlinks=true, - pagecolor=black, - menucolor=black, - linkcolor=black, - citecolor=blue, - pagebordercolor=1 1 1, - urlcolor=red, - plainpages=false, - pdfpagelabels=true, - bookmarksnumbered=true]{hyperref} -\usepackage{lastpage} - -\newcommand{\reportTopic}{} -\newcommand{\revisionNumber}{} -\newcommand{\documentNumber}{} - - -% Setup the right-hand header to display the current doc section: -%---------------------------------------------------------------------------------------------------- -\renewcommand{\sectionmark}[1]{\markright{#1}} -\renewcommand{\subsectionmark}[1]{\markright{#1}} - -% Setup for roman numeral page numbers until TOC: -%---------------------------------------------------------------------------------------------------- -\newboolean{romanpn} - -\pagenumbering{roman} -\setboolean{romanpn}{true} -\let\myTOC\tableofcontents - -\renewcommand\tableofcontents{% -\myTOC -\clearpage -\pagenumbering{arabic} -\setboolean{romanpn}{false} -} - -% Modify titlepage format: -%---------------------------------------------------------------------------------------------------- -\setlength{\TPHorizModule}{1in} -\setlength{\TPVertModule}{\TPHorizModule} -\textblockorigin{3.25in}{1in} - -\pretitle - { - \begin{flushright}\LARGE\sffamily - \thispagestyle{empty} - \begin{textblock}{4}(0,0) - \includegraphics[width=2in,keepaspectratio=true] -{/home/matt/data/megatest/docs/megatest_logo.png} - \end{textblock} - \vspace{1in} - } - -\posttitle{\par\end{flushright}} - -\preauthor{\begin{flushright} \large \sffamily \lineskip 0.5em -\begin{tabular}[t]{c}} -\postauthor{\end{tabular} \par\end{flushright}} - -\predate{\begin{flushright}\large \sffamily Document Number: \documentNumber \\ Revision Number: \revisionNumber \\} - -\postdate{ -\vspace{2in} -\\Matt Welland. -\par\end{flushright}} - -% Setup "fancy" page layout: -%---------------------------------------------------------------------------------------------------- -\fancyhf{} -\setlength{\topmargin}{-1in} -\setlength{\headheight}{1in} -\setlength{\headsep}{0.5in} -\setlength{\oddsidemargin}{0.25in} -\setlength{\evensidemargin}{\oddsidemargin} -\setlength{\textwidth}{6in} -\setlength{\headwidth}{\textwidth} -\setlength{\textheight}{8.375in} -\setlength{\footskip}{0.5in} - -% Setup header: -%------------------------------------------------------------------------------------------ -\fancyhead[L]{\sffamily \bfseries \large Megatest.\\\mdseries \reportTopic} -\fancyhead[R]{\sffamily \bfseries \large User Manual\\ \mdseries \nouppercase{\rightmark}} - -% Setup footer: -%------------------------------------------------------------------------------------------ -\renewcommand{\footrulewidth}{0.4pt} -\fancyfoot[L]{\sffamily \bfseries \documentNumber \\ \mdseries Revision: \revisionNumber} -\fancyfoot[C]{\sffamily \bfseries\thedate \\ \mdseries Free Software. License: GPL v2.0} -\fancyfoot[R]{\ifthenelse{\boolean{romanpn}}{\sffamily \thepage}{\sffamily \bfseries Page \thepage\ of \pageref{LastPage}}} -\end_preamble -\use_default_options false -\maintain_unincluded_children false -\language english -\language_package default -\inputencoding auto -\fontencoding global -\font_roman times -\font_sans helvet -\font_typewriter courier -\font_default_family default -\use_non_tex_fonts false -\font_sc false -\font_osf false -\font_sf_scale 100 -\font_tt_scale 100 - -\graphics default -\default_output_format default -\output_sync 0 -\bibtex_command default -\index_command default -\paperfontsize 11 -\spacing single -\use_hyperref false -\papersize letterpaper -\use_geometry false -\use_amsmath 1 -\use_esint 0 -\use_mhchem 0 -\use_mathdots 1 -\cite_engine basic -\use_bibtopic false -\use_indices false -\paperorientation portrait -\suppress_date false -\use_refstyle 0 -\index Index -\shortcut idx -\color #008000 -\end_index -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation skip -\defskip medskip -\quotes_language english -\papercolumns 1 -\papersides 1 -\paperpagestyle fancy -\tracking_changes false -\output_changes false -\html_math_output 0 -\html_css_as_file 0 -\html_be_strict false -\end_header - -\begin_body - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -renewcommand{ -\backslash -documentNumber}{TSETAGEM-011} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -renewcommand{ -\backslash -reportTopic}{Megatest User Manual} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -renewcommand{ -\backslash -revisionNumber}{v1.36} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Title -Megatest User Manual -\end_layout - -\begin_layout Author -Matthew Welland -\end_layout - -\begin_layout Date -Jan. - 29, 2012 -\end_layout - -\begin_layout Standard -\begin_inset Newpage newpage -\end_inset - - -\begin_inset ERT -status collapsed - -\begin_layout Plain Layout - - -\backslash -copyright -\end_layout - -\end_inset - -2011 Matthew Welland. - All rights reserved. - -\end_layout - -\begin_layout Standard -Megatest is free software released under the General Public License v2.0. - Please see the file COPYING in the source distribution for details. - -\end_layout - -\begin_layout Standard -\begin_inset VSpace medskip -\end_inset - -Email: matt@kiatoa.com. - -\end_layout - -\begin_layout Standard -Web: www.kiatoa.com/fossils/megatest -\end_layout - -\begin_layout Standard -\begin_inset VSpace medskip -\end_inset - -This document is believed to be acurate at the time of writing but as with - any opensource project the source code itself is the reference. - It is the responsibility of the end user to validate that the code will - perform as they expect. - The author assumes no responsibility for any inaccuracies that this document - may contain. - In no event will Matthew Welland be liable for direct, indirect, special, - exemplary, incidental, or consequential damages resulting from any defect - or omission in this document, even if advised of the possibility of such - damages. - -\end_layout - -\begin_layout Standard -This document is a snapshot in time and Megatest software has likely changed - since publication. - This document and Megatest may be improved at any time, without notice - or obligation. - -\end_layout - -\begin_layout Standard -\begin_inset Newpage newpage -\end_inset - - -\end_layout - -\begin_layout Section* -Megatest/document Revision History -\end_layout - -\begin_layout Standard - -\shape italic -Notable revisions of the software are occasionally documented here -\shape default -. -\end_layout - -\begin_layout Standard -\align center -\begin_inset Tabular - - - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -Version -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Author -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Description -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Date -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -v1.25 -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -matt -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -converted to new document template -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -thedate -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Newpage newpage -\end_inset - - -\begin_inset CommandInset toc -LatexCommand tableofcontents - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Newpage newpage -\end_inset - - -\end_layout - -\begin_layout Section -Introduction -\end_layout - -\begin_layout Subsection -Megatest design philosophy -\end_layout - -\begin_layout Standard -Megatest is intended to provide the minimum needed resources to make writing - a suite of tests and implementing continuous build for software, design - engineering or process control (via owlfs for example) without being specialize -d for any specific problem space. - Megatest in of itself does not know what constitutes a PASS or FAIL of - a test. - In most cases megatest is best used in conjunction with logpro or a similar - tool to parse, analyze and decide on the test outcome. -\end_layout - -\begin_layout Subsection -Megatest architecture -\end_layout - -\begin_layout Standard -All data to specify the tests and configure the system is stored in plain - text files. - All system state is stored in an sqlite3 database. - Tests are launched using the launching system available for the distributed - compute platform in use. - A template script is provided which can launch jobs on local and remote - Linux hosts. - Currently megatest uses the network filesystem to -\begin_inset Quotes eld -\end_inset - -call home -\begin_inset Quotes erd -\end_inset - - to your master sqlite3 database. -\end_layout - -\begin_layout Section -Installation -\end_layout - -\begin_layout Subsection -Dependencies -\end_layout - -\begin_layout Standard -Chicken scheme and a number of -\begin_inset Quotes eld -\end_inset - -eggs -\begin_inset Quotes erd -\end_inset - - are required for building megatest. - See the file utils/installall.sh for an automated way to install the dependencie -s on Linux. -\end_layout - -\begin_layout Subsection -Build and Install -\end_layout - -\begin_layout Standard -Run “make test” to create the megatest executable. - You may wish to copy the executable to a centrally accessible location. -\end_layout - -\begin_layout Section -Setup -\end_layout - -\begin_layout Subsection -Create megatest.config -\end_layout - -\begin_layout Standard -Create the file megatest.config using the megatest.config template from the - tests directory. - At a minimum you need the following: -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -# Fields are the keys under which your test runs are organized -\end_layout - -\begin_layout Plain Layout - -[fields] -\end_layout - -\begin_layout Plain Layout - -field1 TEXT -\end_layout - -\begin_layout Plain Layout - -field2 TEXT -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -[jobtools] -\end_layout - -\begin_layout Plain Layout - -# The launcher launches jobs to the local or remote hosts, -\end_layout - -\begin_layout Plain Layout - -# the job is managed on the target host by megatest, -\end_layout - -\begin_layout Plain Layout - -# comment out launcher to run local only. - An example launcher -\end_layout - -\begin_layout Plain Layout - -# "nbfake" can be found in the utils directory. - -\end_layout - -\begin_layout Plain Layout - -launcher nbfake -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -# The disks section specifies where the tests will be run. - As you -\end_layout - -\begin_layout Plain Layout - -# run out of space in a partition you can add additional disks -\end_layout - -\begin_layout Plain Layout - -# entries. -\end_layout - -\begin_layout Plain Layout - -# Format is: -\end_layout - -\begin_layout Plain Layout - -# name /path/to/area -\end_layout - -\begin_layout Plain Layout - -[disks] -\end_layout - -\begin_layout Plain Layout - -disk1 /tmp -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -Create runconfigs.config -\end_layout - -\begin_layout Standard -This file is used to set environment variables that are run specific. - You can simply create an empty file to start. -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -# runconfigs.config -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -Create the tests directory and your first test -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -mt -\end_layout - -\begin_layout Plain Layout - -|-- megatest.config -\end_layout - -\begin_layout Plain Layout - -|-- runconfigs.config -\end_layout - -\begin_layout Plain Layout - -`-- tests -\end_layout - -\begin_layout Plain Layout - - `-- mytest -\end_layout - -\begin_layout Plain Layout - - |-- main.sh -\end_layout - -\begin_layout Plain Layout - - `-- testconfig -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -Create the testconfig file for your test -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -[setup] -\end_layout - -\begin_layout Plain Layout - -runscript main.sh -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -Create your test running script, main.sh -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -#!/bin/bash -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -$MT_MEGATEST -runstep mystep1 "sleep 20;echo Done" -m "mystep1 is done" -\end_layout - -\begin_layout Plain Layout - -$MT_MEGATEST -test-status :state COMPLETED :status PASS -m "This is a comment" -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -Run megatest and watch your run progress -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -megatest :field1 abc :field2 def :runname 2011week08.4a -runall -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -watch megatest -list-runs % -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -# OR use the dashboard -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -dashboard & -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -Choose Flow or Unstructured Run? -\end_layout - -\begin_layout Standard -A flow is a structured and specifically sequenced set of tests. - See the Flows chapter to understand the difference. -\end_layout - -\begin_layout Section -How to Write Tests -\end_layout - -\begin_layout Subsection -A Simple Test with one Step -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -mkdir simpletest -\end_layout - -\begin_layout Plain Layout - -cd simpletest -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -Create your testconfig file -\end_layout - -\begin_layout Standard -\begin_inset listings -inline false -status open - -\begin_layout Plain Layout - -# testconfig -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -[setup] -\end_layout - -\begin_layout Plain Layout - -runscript main.csh -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -Create the main.csh script -\end_layout - -\begin_layout Standard -Note: Using csh is NOT recommended. - Use bash, perl, ruby, zsh or anything other than csh. - We use csh here because it is popular in the EDA industry for which Megatest - was originally created. - -\end_layout - -\begin_layout Standard -\noindent -\align left -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -#!/bin/tcsh -x -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -# run the cpu1 simulation. -\end_layout - -\begin_layout Plain Layout - -# The step name is "run_simulation" -\end_layout - -\begin_layout Plain Layout - -# The commandline being run for this step is "runsim cpu1" -\end_layout - -\begin_layout Plain Layout - -# The logpro file to validate the output from the run is "runsim.logpro" -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -$MT_MEGATEST -runstep run_simulation -logpro runsim.logpro "runsim cpu1" -\end_layout - -\begin_layout Plain Layout - -$MT_MEGATEST -test-status :state COMPLETED :status $? -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -You can now run megatest and the created test directory will contain the - new files “run_simulation.html” and “run_simulation.log”. - If you are using the dashboard you can click on the run and then push the - “View log” button to view the log file in firefox. -\end_layout - -\begin_layout Subsection -Simple Test with Multiple Steps -\end_layout - -\begin_layout Standard -To run multiple steps simply add them to the main.csh file. - Here we add a step to test “cpu2”. - The second step that tests cpu2 will only run after the step that tested - “cpu1” completes. -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -#!/bin/tcsh -x -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -# run the cpu1 simulation. -\end_layout - -\begin_layout Plain Layout - -# The step name is "run_simulation" -\end_layout - -\begin_layout Plain Layout - -# The commandline being run for this step is "runsim cpu1" -\end_layout - -\begin_layout Plain Layout - -# The logpro file to validate the output from the run is "runsim.logpro" -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -$MT_MEGATEST -runstep run_simulation_cpu1 -logpro runsim.logpro "runsim cpu1" - && -\backslash - -\end_layout - -\begin_layout Plain Layout - -$MT_MEGATEST -runstep run_simulation_cpu2 -logpro runsim.logpro "runsim cpu2" -\end_layout - -\begin_layout Plain Layout - -$MT_MEGATEST -test-status :state COMPLETED :status $? -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -Simple Test with Multiple Steps, Some in Parallel -\end_layout - -\begin_layout Subsection -The Makefile -\end_layout - -\begin_layout Standard -A good way to run steps in parallel within a single test, especially when - there are following steps, is to use the Unix Make utility. - Writing Makefiles is beyond the scope of this document but here is a minimal - example that will run “runsim cpu1” and “runsim cpu2” in parallel. - For more information on make try “info make” at the Linux command prompt. -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -# Example Makefile to run two steps in parallel -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -RTLDIR=/path/to/rtl -\end_layout - -\begin_layout Plain Layout - -CPUS = cpu1 cpu2 -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -run_simulation_$(CPUS).html : $(RTLDIR)/$(CPUS) -\end_layout - -\begin_layout Plain Layout - - $(MT_MEGATEST) -runstep run_simulation_$(CPUS) -logpro runsim.logpro "runsim - $(CPUS) -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -The main.csh file -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -#!/bin/tcsh -x -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -# run the cpu1 and cpu2 simulations in parallel. - -\end_layout - -\begin_layout Plain Layout - -# The -j parameter tells make how many jobs it may run in parallel -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout -\noindent -\align left - -make -j 2 -\end_layout - -\begin_layout Plain Layout - -$MT_MEGATEST -test-status :state COMPLETED :status $? -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -Simple Test with Iteration -\end_layout - -\begin_layout Standard -Since no jobs run after the cpu1 and cpu2 simulations in this test it is - possible to use iterated mode. -\end_layout - -\begin_layout Subsection -Update your testconfig file for iteration -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -[setup] -\end_layout - -\begin_layout Plain Layout - -runscript main.csh -\end_layout - -\begin_layout Plain Layout -\noindent -\align left - -\end_layout - -\begin_layout Plain Layout - -[items] -\end_layout - -\begin_layout Plain Layout - -CPU cpu1 cpu2 -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -Rewrite your main.csh for iteration -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout -\noindent - -#!/bin/tcsh -x -\end_layout - -\begin_layout Plain Layout -\noindent - -\end_layout - -\begin_layout Plain Layout -\noindent - -# run the cpu simulation but now use the environment variable $CPU -\end_layout - -\begin_layout Plain Layout -\noindent - -# to select what cpu to run the simulation against -\end_layout - -\begin_layout Plain Layout -\noindent - -\end_layout - -\begin_layout Plain Layout -\noindent - -$MT_MEGATEST -runstep run_simulation -logpro runsim.logpro "runsim $CPU" -\end_layout - -\begin_layout Plain Layout -\noindent - -# As of version 1.07 Megatest automatically converts a status of "0" -\end_layout - -\begin_layout Plain Layout -\noindent - -# to "PASS", any other number to "FAIL" and directly uses the value of -\end_layout - -\begin_layout Plain Layout -\noindent - -# a string passed in. -\end_layout - -\begin_layout Plain Layout -\noindent - -$MT_MEGATEST -test-status :state COMPLETED :status $? -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -Tests with Inter-test dependencies -\end_layout - -\begin_layout Standard -Sometimes a test depends on the output from a previous test or it may not - make sense to run a test is another test does not complete with status - “PASS”. - In either of these scenarios you can use the “waiton” keyword in your testconfi -g file to indicate that this test must wait on one or more tests to complete - before being launched. - In this example there is no point in running the “system” test if the “cpu” - and “mem” tests either do not complete or complete but with status “FAIL”. -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout -\noindent - -# testconfig for the "system" test -\end_layout - -\begin_layout Plain Layout -\noindent - -[setup] -\end_layout - -\begin_layout Plain Layout -\noindent - -runscript main.csh -\end_layout - -\begin_layout Plain Layout -\noindent - -waiton cpu mem -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -Rolling up Miscellaneous Data -\end_layout - -\begin_layout Standard -Use the -load-test-data switch to roll up arbitrary data from a test into - the test_data table. -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -# Fields are: -\end_layout - -\begin_layout Plain Layout - -# category,variable,value,expected,tol,units,comment,status -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -$MT_MEGATEST -load-test-data << EOF -\end_layout - -\begin_layout Plain Layout - -foo,bar,1.2,1.9,> -\end_layout - -\begin_layout Plain Layout - -foo,rab,1.0e9,10e9,1e9 -\end_layout - -\begin_layout Plain Layout - -foo,bla,1.2,1.9,< -\end_layout - -\begin_layout Plain Layout - -foo,bal,1.2,1.2,<,,Check for overload -\end_layout - -\begin_layout Plain Layout - -foo,alb,1.2,1.2,<=,Amps,This is the high power circuit test -\end_layout - -\begin_layout Plain Layout - -foo,abl,1.2,1.3,0.1 -\end_layout - -\begin_layout Plain Layout - -foo,bra,1.2,pass,silly stuff -\end_layout - -\begin_layout Plain Layout - -faz,bar,10,8mA,,,"this is a comment" -\end_layout - -\begin_layout Plain Layout - -EOF -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -New entries are keyed on the category and variable. - If a new record is inserted with a category and variable that have already - been used the new record will replace the old record. -\end_layout - -\begin_layout Standard -Where value, expected and tol are specified the behavior is as follows. -\end_layout - -\begin_layout Itemize -If value, expected and tol are numbers then status is calculated as PASS - if (expected-tol) <= value <= (expected+tol) -\end_layout - -\begin_layout Itemize -If value and expected are numbers and tol is >, <, >= or <= then value is - compared with expected using the operator given by tol -\end_layout - -\begin_layout Itemize -If status is specified its value overrides the above calculations. -\end_layout - -\begin_layout Subsection -Rolling up Runs -\end_layout - -\begin_layout Standard -To roll up a number of tests in a sequence of runs to a single run use the - -rollup command. - -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -megatest -rollup :sysname ubuntu :fsname nfs :datapath none :runname rollup_ww38 -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -All keys must be specified and the runname is the name of the run that will - be created. - All paths are kept original inside the database. - When -remove-runs is used to delete runs the data is not deleted if there - are rollups that refer to the data. - -\end_layout - -\begin_layout Section -Dashboard -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -> dashboard & -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Graphics - filename dashboard.png - scale 80 - -\end_inset - - -\end_layout - -\begin_layout Standard -Pushing one of the buttons on the main dashboard will bring up the test - specific dashboard. - Values are updated in semi-real time as the test runs. -\end_layout - -\begin_layout Standard -\begin_inset Graphics - filename dashboard-test.png - scale 80 - -\end_inset - - -\end_layout - -\begin_layout Section -Generating an OpenDocument Spreadsheet from the Database -\end_layout - -\begin_layout Standard -And OpenDocument multi-paned spreadsheet can be generated from the megatest.db - file by running -extract-ods -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -megatest -extract-ods results.ods :runname % -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -You can optionally specify the keys for your database to limit further the - runs to extract into the spreadsheet. - The first sheet contains all the run data and subsequent sheets contain - data rolled up for the individual tests. -\end_layout - -\begin_layout Section -Introspection -\end_layout - -\begin_layout Subsection -Getting previous test paths -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -megatest -test-paths -target %/%/% :runname % -testpatt % -itempatt % :status - PASS -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -Flows -\end_layout - -\begin_layout Standard -A flow specifies the tests to run, the order and dependencies and is managed - by a running megatest process. -\end_layout - -\begin_layout Section -Flow Specification and Running (Not released yet) -\end_layout - -\begin_layout Subsection -Write your flow file -\end_layout - -\begin_layout Standard -flows/.config -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -# Flow: -\end_layout - -\begin_layout Plain Layout - -[flowconfig] -\end_layout - -\begin_layout Plain Layout - -# turn on item level dependencies -\end_layout - -\begin_layout Plain Layout - -itemdeps on -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -[flowsteps] -\end_layout - -\begin_layout Plain Layout - -# [,] -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -# Run the test "copydata" -\end_layout - -\begin_layout Plain Layout - -copydata -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -# Run the test "setup" after copydata completes with PASS, WARN or WAIVE -\end_layout - -\begin_layout Plain Layout - -setup,copydata -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -# once the test "setup" completes successfully run sim1, sim2 and sim3 -\end_layout - -\begin_layout Plain Layout - -sim1,setup -\end_layout - -\begin_layout Plain Layout - -sim2,setup -\end_layout - -\begin_layout Plain Layout - -sim3,setup -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Subsection -Run the flow -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -megatest -runflow :FIELD1 val1 :FIELD2 val2 :runname wk32.4 -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -Monitor based running -\end_layout - -\begin_layout Subsection -Monitor logic -\end_layout - -\begin_layout Standard -Note: The monitor is usable but incomplete as of Megatest v1.31. - Click on the -\begin_inset Quotes eld -\end_inset - -Monitor -\begin_inset Quotes erd -\end_inset - - button on the dashboard to start the monitor and give it a try. -\end_layout - -\begin_layout Standard -\begin_inset Graphics - filename monitor-state-diagram.svg - -\end_inset - - -\end_layout - -\begin_layout Section -Reference -\end_layout - -\begin_layout Subsection -Configuration file Syntax -\end_layout - -\begin_layout Standard -Note: whitespace is preserved including at the end of line. - Ensure your entries only have whitespace at the end of line when needed - to avoid problems. -\end_layout - -\begin_layout Subsubsection -Sections -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily}" -inline false -status open - -\begin_layout Plain Layout - -[section name] -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -This creates a section named “section name” -\end_layout - -\begin_layout Subsubsection -Variables -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily}" -inline false -status open - -\begin_layout Plain Layout - -VARX has this value -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -The variable “VARX” will have the value “has this value” -\end_layout - -\begin_layout Subsubsection -Includes -\end_layout - -\begin_layout Standard -\begin_inset listings -inline false -status open - -\begin_layout Plain Layout - -[include filename] -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -The file named “filename” will be included as if part of the calling file. - NOTE: This means no section can be named “include “ (with the whitespace). -\end_layout - -\begin_layout Subsubsection -Setting a variable by running a command -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily}" -inline false -status open - -\begin_layout Plain Layout - -VARNAME [system ls /tmp] -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -The variable “VARNAME” will get a value created by the Unix command “ls - /tmp”. - All lines of output from the command will be joined with a space. -\end_layout - -\begin_layout Subsubsection -Notes -\end_layout - -\begin_layout Itemize -Some variables are infered as lists. - Each token on the line separated by whitespace will be member of the list. -\end_layout - -\begin_layout Itemize -Comments (lines starting with #) and blank lines are ignored. -\end_layout - -\begin_layout Subsection -Environment variables -\end_layout - -\begin_layout Standard -\begin_inset Tabular - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -Variable -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Purpose -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -MT_CMDINFO -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Conveys test variables to the megatest test runner. -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -MT_TEST_RUN_DIR -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Directory assigned by megatest for the test to run. -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -MT_TEST_NAME -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Name of the test, corrosponds to the directory name under tests. -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -MT_ITEM_INFO -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Iterated tests will set this to a sequence of key/values ((KEY val) ...) -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -MT_RUN_AREA_HOME -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Directory where megatest was launched from and where the tests code can - be found -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -MT_RUNNAME -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Name of this run as set by the :runname parameter -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -MT_MEGATEST -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Path/Filename to megatest executable. - Found either from called path or but using the “exectuable” keyword in - the [setup] section. -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout - .... -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -The field values as set on the megatest -runall command line (e.g. - :field1 abc) -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Subsection -megatest.config -\end_layout - -\begin_layout Standard -\begin_inset Tabular - - - - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -section -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -variable -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -value -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -required -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -comment -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[setup] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -max_concurrent_jobs -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -if variable is not defined no limit on jobs -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -no -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -executable -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -full path to megatest binary -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -no -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Use only if necessary, megatest will extract the location from where it - used to launch and add append that to the PATH for test runs. -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -runsdir -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -full path to where the link tree to all runs will be created -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -no -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Because your runs may be spread out over several disk partitions a central - link tree is created to make finding all the runs easy. -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[fields] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -string of letters, numbers and underscore -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -string of letters, numbers and underscore -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -at least one -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[jobtools] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -launcher -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -command line used to launch jobs - the job command (megatest -execute) will - be appended to this -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -no -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -workhosts -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -list of hostnames to run jobs on NOT SUPPORTED RIGHT NOW -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -n/a -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[jobgroups] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -string of letters, numbers and underscore -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -number -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -no -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Control number of jobs allowed to concurrently run in categories. - See [jobgroup] in testconfig -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[env-override] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -string of letters, numbers and underscore -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -any string -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -no -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -These are set on the test launching machine, not the test running machine. - Typical usage is to control the host or run queue for launching tests. - These values will not be seen by the test when it runs. -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[disks] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -string of letters, numbers and underscore -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -a valid path writable by the test launching process and by the test process -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -yes -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -The disk usage balancing algorithm is to choose the disk with the least - space for each test run. - -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Subsection -runconfigs.config file -\end_layout - -\begin_layout Standard -\begin_inset Tabular - - - - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -section -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -variable -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -value -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -required? -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -comment -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[default] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -string of letters, numbers and underscore -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -any -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -no -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -variables set in this section will be available for all runs, defining the - same variable in another section will override the value from the default - section -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[field1value/field2value...] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -string of letters, numbers and underscore -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -any -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -no -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -the values in this section will be set for any run where field1 is field1value, - field2 is field2value and fieldN is fieldNvalue. - -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Standard -Example: a test suite that checks that a piece of software works correctly - for different customer configurations and locations each of which is done - as a separate release regression run. - The fields, CUSTOMER and LOCATION were chosen. - The following runconfigs.config file would set some variables specific to - runs for megacorp in India and femtocorp in the Cook Islands and New Zealand: -\end_layout - -\begin_layout Standard -\begin_inset listings -lstparams "basicstyle={\small\ttfamily},language=sh" -inline false -status open - -\begin_layout Plain Layout - -# runconfigs.config -\end_layout - -\begin_layout Plain Layout - -[default] -\end_layout - -\begin_layout Plain Layout - -ENCRYTION true -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -[megacorp/india] -\end_layout - -\begin_layout Plain Layout - -TESTPATH /nfs/testing/megacorp_runs -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -[femtocorp/cook_islands] -\end_layout - -\begin_layout Plain Layout - -ENCRYTION false -\end_layout - -\begin_layout Plain Layout - -TESTPATH /afs/kiatoa/testing/cook_islands -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -[femtocorp/new_zealand] -\end_layout - -\begin_layout Plain Layout - -TESTPATH /afs/kiatoa/testing/new_zealand -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -[megacorp/new_zealand] -\end_layout - -\begin_layout Plain Layout - -TESTPATH /nfs/testing/megacorp_runs -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Paragraph* -Running megatest like this: -\end_layout - -\begin_layout Code -megatest :CUSTOMER megacorp :LOCATION new_zealand :runname week12_2011_run1 - -runall -\end_layout - -\begin_layout Paragraph* -Would set: -\end_layout - -\begin_layout Code -ENCRYPTION true -\end_layout - -\begin_layout Code -TESTPATH /nfs/testing/megacorp_runs -\end_layout - -\begin_layout Subsection -Writing tests -\end_layout - -\begin_layout Subsubsection -testconfig file -\end_layout - -\begin_layout Standard -\begin_inset Tabular - - - - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -section -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -variable -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -value -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -required? -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -comments -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[setup] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -runscript -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -name of script to execute for this test -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -yes -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -The script must be executable and either provide the full path or put a - copy at the top of your test directory -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[requirements] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -waiton -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -list of valid test names -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -no -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -This test will not run until the named tests are state completed and status - PASS -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -jobgroup -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[items] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -any valid -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -list of values -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -no -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -The test will be repeated once for each item with the variable name set - to the value. - If there is more than one variable then the test will be run against all - unique combinations of the values -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -[eztests] -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -any valid -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -stepname command -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -no -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Use in addition to or instead of runscript for easy implementation of steps. - If .logpro exists it will be applied to the .log and - resulting exit code will be used to determine PASS/FAIL/WARN -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Command line -\end_layout - -\begin_layout Standard -\begin_inset Tabular - - - - - - - - -\begin_inset Text - -\begin_layout Plain Layout -switch or param -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -parameter -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -purpose -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -comments -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --h -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -brief help -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --runall -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -run all tests -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --runtests -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -test1,test2,... -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -run one or more tests -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --step -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -stepname -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -record a step -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -requires :state and :status -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --test-status -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -record the test status -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -requires :state and :status -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --setlog -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -logfilename -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -set the logfile name for a test -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -path is assumed to be relative to the test run directory -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --set-toplog -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -logfilename -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -set the logfile name for the top test in an iterated test run -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -each sub test can have its own logfile set -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --m -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -\begin_inset Quotes eld -\end_inset - -comment -\begin_inset Quotes erd -\end_inset - - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -sets a comment for the step, test or run -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -:runname -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -[a-zA-Z0-9_-]+ -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -directory in which this run will be stored in the test run area -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -:state -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -any value -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Set the step or test state, this is stored in the state field in the steps - or tests table respectively -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -For tests Megatest recognises -\begin_inset Quotes eld -\end_inset - -INCOMPLETE -\begin_inset Quotes erd -\end_inset - -, -\begin_inset Quotes eld -\end_inset - -COMPLETE -\begin_inset Quotes erd -\end_inset - - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout -:status -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -any value -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Set the step or test status, this is stored in the status field in the steps - or tests table respectively -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -For tests Megatest recognises -\begin_inset Quotes eld -\end_inset - -PASS -\begin_inset Quotes erd -\end_inset - -, -\begin_inset Quotes eld -\end_inset - -FAIL -\begin_inset Quotes erd -\end_inset - -, and -\begin_inset Quotes eld -\end_inset - -CHECK -\begin_inset Quotes erd -\end_inset - - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --list-runs -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -any value, % is wildcard -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Respects -itempatt and -testpatt for filters -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --testpatt -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -any value, % is wildcard -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --itempatt -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -any value, % is wildcard -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --showkeys -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Print the keys being used for this database -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --force -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Test will not re-run if in the -\begin_inset Quotes eld -\end_inset - -PASS -\begin_inset Quotes erd -\end_inset - -, -\begin_inset Quotes eld -\end_inset - -CHECK -\begin_inset Quotes erd -\end_inset - - or -\begin_inset Quotes eld -\end_inset - -KILLED -\begin_inset Quotes erd -\end_inset - -, using -force will force the run to be launched. -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -WARNING: The -force switch will bypass any -\begin_inset Quotes eld -\end_inset - -waiton -\begin_inset Quotes erd -\end_inset - - dependencies. -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --xterm -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Launch an xterm instead of run the test. - The xterm will have the environment that the test would see. -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --remove-runs -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Remove a run, test or subtest from the database and the disk. - Cannot be undone. - Requires -testpatt, -itempatt, :runname and all keys be specified. -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout - -\shape italic -Test helpers -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --runstep -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -Used inside a test to run a step, record the start and end of the step and - optionally analyze the output using logpro. -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\begin_inset Text - -\begin_layout Plain Layout --logpro -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout -If using logpro to acess the PASS/FAIL status of the step you specify the - logpro file with this parameter. -\end_layout - -\end_inset - - -\begin_inset Text - -\begin_layout Plain Layout - -\end_layout - -\end_inset - - - - -\end_inset - - -\end_layout - -\begin_layout Section -\start_of_appendix -Data -\end_layout - -\begin_layout Section -References -\end_layout - -\end_body -\end_document