Skip to content

Commit

Permalink
Added TestExport and SchemaExport to avoid creating unstructured json,
Browse files Browse the repository at this point in the history
  • Loading branch information
stalep committed Feb 5, 2024
1 parent 36bc220 commit ec340b1
Show file tree
Hide file tree
Showing 33 changed files with 6,261 additions and 5,675 deletions.
64 changes: 64 additions & 0 deletions docs/site/content/en/docs/Tasks/import-export/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
title: Import and Export Tests and Schemas
date: 2023-11-30
description: How to import and export Tests and Schemas in Horreum
categories: [Tutorial]
weight: 3
---

> **Prerequisites**:
> 1. Horreum is running
> 2. To export you have previously defined a `Schema` for the JSON data you wish to analyze, please see [Define a Schema](/docs/tasks/define-schema-and-views/)
> 3. To export you have previously defined a Test, please see [Create new Test](/docs/tasks/create-new-test/)
## Background

To simplify copying Tests and Schemas between Horreum instances Horreum provides a simple API to export and import new Tests and Schemas. Horreum also support updating exising Schemas and Tests by importing Tests or Schemas with existing Id's.

## TestExport

The export object for Tests is called [TestExport](https://github.com/Hyperfoil/Horreum/horreum-api/src/main/java/io/hyperfoil/tools/horreum/api/data/TestExport.java) and contains a lot of other fields in addition to what's defined in [Test](https://github.com/Hyperfoil/Horreum/horreum-api/src/main/java/io/hyperfoil/tools/horreum/api/data/Test.java). This includes, variables, experiments, actions, subscriptions, datastore and missingDataRules. This is to simplify the import/export experience and make sure that all the data related to a Test has a single entrypoint with regards to import and export. Note that secrets defined on [Action](https://github.com/Hyperfoil/Horreum/horreum-api/src/main/java/io/hyperfoil/tools/horreum/api/data/Action.java) are not portable between Horreum instances and there might be security concerns so they are omitted. The apiKey and password attributs defined on the config field in [Datastore](https://github.com/Hyperfoil/Horreum/horreum-api/src/main/java/io/hyperfoil/tools/horreum/api/data/Datastore.java) are also omitted and will have to be manually added in a separate step.

## TestSchema

The export object for Schemas is called [SchemaExport](https://github.com/Hyperfoil/Horreum/horreum-api/src/main/java/io/hyperfoil/tools/horreum/api/data/SchemaExport.java) and contains other fields in addition to what's defined in [Schema](https://github.com/Hyperfoil/Horreum/horreum-api/src/main/java/io/hyperfoil/tools/horreum/api/data/Schema.java). This includes, labels, extractors and transformers. This is to simplify the import/export experience and make sure that all the data related to a Schema has a single entrypoint with regards to import and export.

## Import Schemas

```bash
curl 'http://localhost:8080/api/schema/import/' \
-s -X POST -H 'content-type: application/json' \
-H 'Authorization: Bearer '$TOKEN \
-d @/path/to/schema.json
```

If you are unfamiliar with creating the auth token please see [Upload Run](/docs/tasks/upload-new-run/).

## Import Tests

```bash
curl 'http://localhost:8080/api/test/import/' \
-s -X POST -H 'content-type: application/json' \
-H 'Authorization: Bearer '$TOKEN \
-d @/path/to/test.json
```

## Export Schemas

```bash
SCHEMAID='123'
curl 'http://localhost:8080/api/schema/export/?id='$SCHEMAID \
-H 'Authorization: Bearer '$TOKEN \
-O --output-dir /path/to/folder
```

## Export Tests

```bash
TESTID='123'
curl 'http://localhost:8080/api/test/export/?id=$TESTID' \
-s -X POST -H 'content-type: application/json' \
-H 'Authorization: Bearer '$TOKEN \
-O --output-dir /path/to/folder
```
Loading

0 comments on commit ec340b1

Please sign in to comment.