trace-server: Create experiment in workspace and detect conflicts

Create an experiment resource in the workspace's Tracing project. Add
its trace resources and create its supplementary folder. Set the
experiment type and trace types.

Detect a conflict when an experiment with the same name exists with a
different set of traces. Detect the conflict even if the experiment is
not opened.

Create the trace resource using the given trace name, not the last
segment of the given path. Detect a conflict when a trace with the same
name exists in the same parent folder but with a different target
location (path) or a different trace type.

Posting a trace only creates the trace in the workspace and detects its
trace type. A trace instance is not created. Trace instances are created
only when the experiment is posted.

Delete the experiment's resources and supplementary folder when the
experiment is deleted.

Delete the traces resources and supplementary folder when a
trace is deleted only if the trace is not used in any remaining
experiment. Otherwise reject the trace deletion.

Assign a fixed UUID based on the trace path and name in
TraceManagerService.
Assign a fixed UUID based on the experiment name in
ExperimentManagerService.

Fix the endpoints in DataProviderService to use expUUID instead of uuid,
according to TSP specification. Get the experiment instance from the
ExperimentManagerService.

Create new classes Trace and Experiment for the JSon model. This is
required in order to use the trace server assigned trace UUID and
experiment UUID in TSP response, instead of the instance's getUUID().

Update unit tests to use experiments when appropriate according to TSP
specification.

Change-Id: Ic749939e4e26a3e9f3ac8d625fa0d173b5334801
Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-on: https://git.eclipse.org/r/c/tracecompass.incubator/org.eclipse.tracecompass.incubator/+/170789
Tested-by: Trace Compass Bot <tracecompass-bot@eclipse.org>
Tested-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
Reviewed-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
16 files changed
tree: 089336df891a4564d8cbc8d938f98a2c8023f305
  1. .mvn/
  2. analyses/
  3. callstack/
  4. common/
  5. doc/
  6. rcp/
  7. scripting/
  8. skeleton/
  9. trace-server/
  10. tracetypes/
  11. vm/
  12. .gitignore
  13. overview.html
  14. pom.xml
  15. README.md
README.md

Eclipse Trace Compass Incubator

This source tree contains the source code for Trace Compass Incubator plugins.

For information on running the Trace Compass Trace Server, refer to the README in the trace-server directory.

Table of Contents

Project rules and guidelines

This project is an incubator which aims at rapid availability of new features and prototypes, to provide new functionnalities to end users and get feedback from them during the development process. As such, code style and design architecture will not be looked at too much during reviews, though some advices and ideas can be discussed. The features have to work as expected though and not break anything in Trace Compass.

  • Add unit tests: CI will be run on every patch on gerrit, so having unit tests ensures that a patch does not break anything somewhere else. Also, these plugins are work in progress. Having unit tests makes it easier to manipulate code structure and algorithms by knowing the expected results. Tests need to be maintained, but have more benefits than trouble.

  • There is no release, so no API. Plugins may use the other incubation features at their own risk.

  • The incubator is an Eclipse project so code will be verified to make sure it can be distributed by Eclipse. Committers are responsible to ensure the IP due diligence is met with every patch submitted.

When the code base of some feature gets more stable and mature, it may be ported to the main Trace Compass repository and only then will there be thorough code review and design discussion.

Setting up the development environment

To set up the environment to build Trace Compass from within Eclipse, see this wiki page: http://wiki.eclipse.org/Trace_Compass/Development_Environment_Setup

Once the Trace Compass environment set, import the projects from this repository.

Compiling manually

The Maven project build requires version 3.3 or later. It can be downloaded from http://maven.apache.org or from the package management system of your distro.

To build the project manually using Maven, simply run the following command from the top-level directory:

mvn clean install

The default command will compile and run the unit tests. Running the tests can take some time, to skip them you can append -Dmaven.test.skip=true to the mvn command:

mvn clean install -Dmaven.test.skip=true

The resulting executables will be in the rcp/org.eclipse.tracecompass.incubator.rcp.product/target/products. There are the archives for linux, macos and Windows. The sub-directories org.eclipse.tracecompass.incubator.rcp/<os>/... contain the executable for each OS.

To generate the javadoc from the Trace Compass source code, run the following command from the top-level directory:

mvn clean package javadoc:aggregate

The javadoc html files will be under target/site/apidocs.

Maven profiles and properties

The following Maven profiles and properties are defined in the build system. You can set them by using -P[profile name] and -D[property name]=[value] in mvn commands.

  • -Pdeploy-update-site

    Mainly for use on build servers. Copies the standard update site (for the Eclipse plugin installation) to the destination specified by -DsiteDestination=/absolute/path/to/destination.

  • mvn javadoc:aggregate

    Mainly for use on build servers. Generates the javadoc of API classes as a HTML website to the destination specified by -Djavadoc-site=/absolute/path/to/destination.