ntt

package module
v0.16.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 10, 2022 License: BSD-3-Clause Imports: 18 Imported by: 0

README

Go Report Card Build Status


Documentation  |   Installation  |   Contact  |   Contribute


ntt is a free and open toolset for language agnostic testing with TTCN-3. It provides IDE support, code generators and much more. Have a look at the documentation page for further details.

ntt is written in native Go and has full support for TTCN-3 Core Language Specification v4.11.1 and various extensions. Without cutting corners, it is one of the fastest TTCN-3 tools available

Install

The Visual Studio Code Extension and the vim-lsp-settings should install and update ntt automatically. But it's also possible to install ntt manually.

You can choose between installing the pre-built binaries or compiling NTT from source. Using the binaries is usually easier. Compiling from source means you have more control.

Please note, ntt helper tools, like the FindNTT.cmake or ntt-mcov are not included in pre-built binary packages, yet. Consider building from source.

Install pre-built binaries

We provide pre-built binaries for Mac, Windows and Linux and for various architectures:

Windows Installer

We provide a Microsoft Windows Installer. The advantage of this installer is it configures your PATH settings, so ntt is reachable from shells. This allows you to start hacking without any ado.

We have not signed the installer, though.

Debian Packages

Download the .deb package from the releases page and install with dpkg -i.

RPM Packages

Download the .rpm package from the releases page and install with package manager of your choice. You can also install directly from the internet:

sudo dnf install https://github.com/nokia/ntt/releases/latest/download/ntt.x86_64.rpm

Go Get Method

If you have Go installed, you may easily install our commands by using the go-get method:

 go get github.com/nokia/ntt/cmd/...

However note, this will install latest ntt from master branch and thus the version might not be correct:

$ ntt version
ntt dev, commit none, built at unknown

Compiling from Source

ntt requires a Go compiler >= 1.13, git and make to build. To build and install simply call:

make
sudo make install

You may control installation by specifying PREFIX and DESTDIR variables. For example:

make PREFIX=/
make install DESTDIR=$HOME/.local

Contact us

If you have questions, you are welcome to contact us at ntt@groups.io.

You want to contribute? That's great! Kindly read our contribution guide for more details.

Project Status

ntt is used by Nokia 4G and 5G in production. By developers and also by our build automation environment, running millions of TTCN-3 tests per day.
But ntt is still in development and not all features have the same good test coverage. We recommend verifying ntt functionality before using it in your automation environment.

License

This project is licensed under the BSD-3-Clause license - see the LICENSE.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BasketFlags

func BasketFlags() *pflag.FlagSet

BasketFlags returns a flagset with all flags for filtering objects.

BasketFlags are regular expressions to filter objects. If you pass multiple regular expressions, all of them must match (AND). Example:

$ cat example.ttcn3
testcase foo() ...
testcase bar() ...
testcase foobar() ...
...

$ ntt list --regex=foo --regex=bar
example.foobar

$ ntt list --regex='foo|bar'
example.foo
example.bar
example.foobar

Similarly, you can also specify regular expressions for documentation tags. Example:

$ cat example.ttcn3
// @one
// @two some-value
testcase foo() ...

// @two: some-other-value
testcase bar() ...
...

$ ntt list --tags-regex=@one --tags-regex=@two
example.foo

$ ntt list --tags-regex='@two: some'
example.foo
example.bar

func GenerateControls

func GenerateControls(files ...string) <-chan string

GenerateControls emits all control function ids from given TTCN-3 files to a channel.

func GenerateControlsWithContext

func GenerateControlsWithContext(ctx context.Context, b Basket, files ...string) <-chan string

GenerateControls emits all control function ids from given TTCN-3 files to a channel.

func GenerateIDs

func GenerateIDs(ids ...string) <-chan string

GenerateIDs emits given IDs to a channel.

func GenerateIDsWithContext

func GenerateIDsWithContext(ctx context.Context, ids ...string) <-chan string

GenerateIDs emits given IDs to a channel.

func GenerateTests

func GenerateTests(files ...string) <-chan string

GenerateTests emits all test ids from given TTCN-3 files to a channel.

func GenerateTestsWithContext

func GenerateTestsWithContext(ctx context.Context, b Basket, files ...string) <-chan string

GenerateTestsWithContext emits all test ids from given TTCN-3 files to a channel.

func SplitQualifiedName

func SplitQualifiedName(name string) (string, string)

SplitQualifiedName splits a qualified name into module and test name.

Types

type Basket

type Basket struct {
	// Name is the name of the basket. The basket is used to filter objects
	// by tag, if no explicit filters are given.
	Name string

	// Regular expressions the object name must match.
	NameRegex []string

	// Regular expressions the object name must not match.
	NameExclude []string

	// Regular expressions the object tags must match.
	TagsRegex []string

	// Regular expressions the object tags must not match.
	TagsExclude []string

	// Baskets are sub-baskets to be ORed.
	Baskets []Basket
}

A Basket is a filter for objects. It can be used to filter objects by name and tags.

Baskets are also filters defined by environment variables of the form:

NTT_LIST_BASKETS_<name> = <filters>

For example, to define a basket "stable" which excludes all objects with @wip or @flaky tags:

export NTT_LIST_BASKETS_stable="-X @wip|@flaky"

Baskets become active when they are listed in colon separated environment variable NTT_LIST_BASKETS. If you specify multiple baskets, at least of them must match (OR).

Rule of thumb: all baskets are ORed, all explicit filter options are ANDed. Example:

$ export NTT_LIST_BASKETS_stable="--tags-exclude @wip|@flaky"
$ export NTT_LIST_BASKETS_ipv6="--tags-regex @ipv6"
$ NTT_LIST_BASKETS=stable:ipv6 ntt list -R @flaky

Above example will output all tests with a @flaky tag and either @wip or @ipv6 tag.

If a basket is not defined by an environment variable, it's equivalent to a "--tags-regex" filter. For example, to lists all tests, which have either a @flaky or a @wip tag:

# Note, flaky and wip baskets are not specified explicitly.
$ NTT_LIST_BASKETS=flaky:wip ntt list

# This does the same:
$ ntt list --tags-regex="@wip|@flaky"

func NewBasket

func NewBasket(name string, args ...string) (Basket, error)

NewBasket creates a new basket and parses the given arguments.

func NewBasketWithFlags

func NewBasketWithFlags(name string, fs *pflag.FlagSet) (Basket, error)

func (*Basket) LoadFromEnvOrConfig

func (b *Basket) LoadFromEnvOrConfig(c *project.Config, key string) error

Load baskets from given environment variable from environment or from configuration.

func (*Basket) Match

func (b *Basket) Match(name string, tags [][]string) bool

Match returns true if the given name and tags match the basket or sub-basket filters.

type Job

type Job struct {
	// Full qualified name of the test or control function to be executed.
	Name string

	// Working directory for the job.
	Dir string

	// Test suite the job belongs to.
	Suite *Suite
	// contains filtered or unexported fields
}

Job represents a single job to be executed.

func (*Job) ID

func (j *Job) ID() string

A unique job identifier.

type Ledger

type Ledger struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Ledger is a worker pool for executing jobs.

func NewLedger

func NewLedger(n int) *Ledger

func (*Ledger) Done

func (l *Ledger) Done(job *Job)

func (*Ledger) Jobs

func (l *Ledger) Jobs() []*Job

func (*Ledger) NewJob

func (l *Ledger) NewJob(name string, suite *Suite) *Job

func (*Ledger) Run

func (l *Ledger) Run(ctx context.Context, jobs <-chan *Job) <-chan Result

type Result

type Result struct {
	*Job
	k3r.Test
	tests.Event
}

func (*Result) ID

func (r *Result) ID() string

type Runner

type Runner interface {
	// Run the jobs in the given channel.
	Run(ctx context.Context, jobs <-chan *Job) <-chan Result
}

Runner is a test runner.

type Suite

type Suite struct {
	*project.Config
	RuntimePaths []string
}

Suite represents a test suite.

func NewSuite

func NewSuite(p *project.Config) (*Suite, error)

NewSuite creates a new suite from the given files. It expects either a single directory as argument or a list of regular .ttcn3 files.

Calling NewSuite with an empty argument list will create a suite from current working directory or, if set, from NTT_SOURCE_DIR.

NewSuite will read manifest (package.yml) if any.

Directories

Path Synopsis
cmd
ntt command
internal
compdb
Package compdb provides the structs for generate compilation database as specified by https://clang.llvm.org/docs/JSONCompilationDatabase.html
Package compdb provides the structs for generate compilation database as specified by https://clang.llvm.org/docs/JSONCompilationDatabase.html
env
Package env provides functionality to dynamically load the environment variables
Package env provides functionality to dynamically load the environment variables
fs
Package fs provides a primitive virtual file system.
Package fs provides a primitive virtual file system.
loc
Package loc provides space-efficient mapping of source code locations.
Package loc provides space-efficient mapping of source code locations.
log
Package log provides uniform logging and tracing interfaces for ntt.
Package log provides uniform logging and tracing interfaces for ntt.
lsp
Package lsp implements LSP for gopls.
Package lsp implements LSP for gopls.
lsp/helper command
Invoke with //go:generate helper/helper -t Server -d protocol/tsserver.go -u lsp -o server_gen.go invoke in internal/lsp
Invoke with //go:generate helper/helper -t Server -d protocol/tsserver.go -u lsp -o server_gen.go invoke in internal/lsp
lsp/jsonrpc2
Package jsonrpc2 is a minimal implementation of the JSON RPC 2 spec.
Package jsonrpc2 is a minimal implementation of the JSON RPC 2 spec.
lsp/jsonrpc2/servertest
Package servertest provides utilities for running tests against a remote LSP server.
Package servertest provides utilities for running tests against a remote LSP server.
lsp/protocol
Package protocol contains the structs that map directly to the wire format of the "Language Server Protocol".
Package protocol contains the structs that map directly to the wire format of the "Language Server Protocol".
lsp/span
Package span contains support for representing with positions and ranges in text files.
Package span contains support for representing with positions and ranges in text files.
lsp/telemetry
Package telemetry provides an opinionated set of packages that cover the main concepts of telemetry in an implementation agnostic way.
Package telemetry provides an opinionated set of packages that cover the main concepts of telemetry in an implementation agnostic way.
lsp/telemetry/export
Package export holds the definition of the telemetry Exporter interface, along with some simple implementations.
Package export holds the definition of the telemetry Exporter interface, along with some simple implementations.
lsp/telemetry/export/ocagent
Package ocagent adds the ability to export all telemetry to an ocagent.
Package ocagent adds the ability to export all telemetry to an ocagent.
lsp/telemetry/log
Package log is a context based logging package, designed to interact well with both the lsp protocol and the other telemetry packages.
Package log is a context based logging package, designed to interact well with both the lsp protocol and the other telemetry packages.
lsp/telemetry/metric
Package metric aggregates stats into metrics that can be exported.
Package metric aggregates stats into metrics that can be exported.
lsp/telemetry/stats
Package stats provides support for recording telemetry statistics.
Package stats provides support for recording telemetry statistics.
lsp/telemetry/tag
Package tag provides support for telemetry tagging.
Package tag provides support for telemetry tagging.
lsp/telemetry/trace
Package trace adds support for telemetry tracing.
Package trace adds support for telemetry tracing.
lsp/telemetry/unit
Package unit holds the definitions for the units you can use in telemetry.
Package unit holds the definitions for the units you can use in telemetry.
lsp/xcontext
Package xcontext is a package to offer the extra functionality we need from contexts that is not available from the standard context package.
Package xcontext is a package to offer the extra functionality we need from contexts that is not available from the standard context package.
memoize
Package memoize supports memoizing the return values of functions with idempotent results that are expensive to compute.
Package memoize supports memoizing the return values of functions with idempotent results that are expensive to compute.
session
Package session provides machine-wide unique sessions.
Package session provides machine-wide unique sessions.
session/flock
Package flock implements a thread-safe interface for file locking.
Package flock implements a thread-safe interface for file locking.
yaml
Package yaml provides uniform interface for parsing YAML files.
Package yaml provides uniform interface for parsing YAML files.
k3
Package k3 provides convenience functions for supporting k3 toolchain.
Package k3 provides convenience functions for supporting k3 toolchain.
k3r
k3s
log
Package log supports parsing K3 runtime log files.
Package log supports parsing K3 runtime log files.
t3xf
Package t3xf provides routines for decoding and loading t3xf encoded files.
Package t3xf provides routines for decoding and loading t3xf encoded files.
Package project provides a tool-independent interface for working with various TTCN-3 project layouts and configurations.
Package project provides a tool-independent interface for working with various TTCN-3 project layouts and configurations.
Package test provides interfaces for running TTCN-3 test cases.
Package test provides interfaces for running TTCN-3 test cases.
Package ttcn3 provides routines for evaluating TTCN-3 source code.
Package ttcn3 provides routines for evaluating TTCN-3 source code.
ast
Package ast provides TTCN-3 syntax tree nodes and functions for tree traversal.
Package ast provides TTCN-3 syntax tree nodes and functions for tree traversal.
doc
parser
Package parser implements a tolerant TTCN-3 parser library.
Package parser implements a tolerant TTCN-3 parser library.
scanner
Package scanner provides a TTCN-3 scanner
Package scanner provides a TTCN-3 scanner
syntax
Package syntax provides a fast high fidelity parser for TTCN-3.
Package syntax provides a fast high fidelity parser for TTCN-3.
syntax/internal/gen command
This program reads the TTCN-3 grammar file and generates a parser for it.
This program reads the TTCN-3 grammar file and generates a parser for it.
token
Package token defines constants representing the lexical tokens of the TTCN-3 programming language and basic operations on tokens (printing, predicates).
Package token defines constants representing the lexical tokens of the TTCN-3 programming language and basic operations on tokens (printing, predicates).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL