---
# System prepended metadata

title: NOS Tests

---

# NOS Tests

## Prerequisites 
- Have a VM setup ([guide](https://hackmd.io/@LwMsxe3-SFmNXxugAXOKgg/HkAoasnIo))

## Basic Packages Installation

- `sudo apt update && sudo apt upgrade`
- `sudo apt install make -y`
- `sudo apt install git`
- install `yarn`
    ```
	curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
	echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
	sudo apt update && sudo apt install yarn
	```
- install `docker-compose` ([resource](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04))
- [OPTIONAL] Install [jq](https://stedolan.github.io/jq/) in case you would like to see the json responses in a more user friendly format in your terminal [from the `curl` commands returned from sidecar].

## Install NOS
- `git clone https://github.com/paritytech/nos`
- `cd nos`
- `yarn`
- Follow instructions from the [README](https://github.com/paritytech/nos#nos----node--sidecar) of the NOS repository
- Make a copy of the .env file : `cp .env.example .env`
- `vim .env`
- Changed polkadot version to the latest found [here](https://github.com/paritytech/polkadot)
- Save your changes and exit with combination of keys : `ESC` and `:wq!`
- `cat .env` should show something like
    ```
    POLKADOT_VERSION=v0.9.36
    POLKADOT_PARACHAIN_VERSION=v0.9.320-rc2-9f68ff77
    RELAYCHAIN="polkadot"
    PARACHAIN="statemint"
    SIDECAR_VERSION=latest
    CONTAINER_UID="10000"
    UID=10000
    ```
  

## Tests

### Test1 - Start & Sync Relay/Para & Query through Sidecar
- Connect through `ssh` to my server
- `cd nos`
- vim `.env`
- Change Relay and Parachain to "westend" and "westmint" respectively.
- Save and exit editor. 
- [OPTIONAL]`docker-compose -f sync-state.yml up`
- It starts syncing

  
 ```
 WARN[0000] Found orphan containers ([collator nos-202cc787e-sidecar-1 nos-202cc787e-chain-data-1]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
[+] Running 1/0
 ⠿ Container chain  Created                                                                                                                                                                              0.0s
Attaching to chain
chain  | Relaychain:  westend
chain  | Parachain:  westmint
chain  | Syncing location:  gs://westend-blockstore-backups/westmint-rocksdb-archive
chain  | /root/google-cloud-sdk/bin  cp -r gs://westend-blockstore-backups/westmint-rocksdb-archive/20230118-112213/* /polkadot/chains/westmint/db/
chain  | Syncing location:  gs://westend-blockstore-backups/westend-rocksdb-prune
chain  | /root/google-cloud-sdk/bin  cp -r gs://westend-blockstore-backups/westend-rocksdb-prune/20230118-110912/* /polkadot/chains/westend2/db/
chain  | done syncing location
chain  | setting permissions on /chains/westmint/db/
chain  | done syncing location
chain  | setting permissions on /chains/westend2/db/
chain exited with code 0

```

- Exit Code 0 it means it is all good.
- `docker-compose up -d`
```
[+] Running 3/3
 ⠿ Container nos-202cc787e-sidecar-1     Started             0.8s
 ⠿ Container nos-202cc787e-chain-data-1  Started             0.9s
 ⠿ Container collator                    Started             1.5s

```
- Check with `docker ps` which containers are running 
```
CONTAINER ID   IMAGE                                                         COMMAND                  CREATED          STATUS         PORTS                                         NAMES
eb9d2261c3e9   paritypr/polkadot-parachain-debug:polkadot-v0.9.36-afe528af   "/usr/local/bin/polk…"   14 minutes ago   Up 1 second    9933/tcp, 30333/tcp, 0.0.0.0:9944->9944/tcp   collator
e791c23bd7dd   parity/substrate-api-sidecar:latest                           "docker-entrypoint.s…"   8 hours ago      Up 2 seconds   0.0.0.0:8080->8080/tcp                        nos-202cc787e-sidecar-1

```
- Then you can do some queries through Sidecar to see if everything works correctly like : 
    - `curl -s http://0.0.0.0:8080/runtime/spec | jq`
    
        ```
        {
          "at": {
            "height": "3779285",
            "hash": "0x70b07ed0024181228a7ba30ceed1dcdb39e78e28e01170efb9e39b4c04e5beff"
          },
          "authoringVersion": "1",
          "transactionVersion": "11",
          "implVersion": "0",
          "specName": "westmint",
          "specVersion": "9360",
          "chainType": {
            "live": null
          },
          "properties": {
            "ss58Format": null,
            "tokenDecimals": [
              "12"
            ],
            "tokenSymbol": [
              "WND"
            ]
          }
        }
        
        ```
   - For more endpoints check [Sidecar Docs](https://paritytech.github.io/substrate-api-sidecar/dist/)
   
    
### Check/Stop Containers
- Check the containers that are running: `docker ps`
- Stop containers: `docker stop <CONTAINER ID>`

### Run another combination of Relay/Parachain
- Edit your env file and update the corresponding values 
    - `vim .env`
    - examples are given in the README
    - for example if you want to run Kusama / Statemine you can use this [configuration](https://github.com/paritytech/nos#statemine-example-1)
    - Save & Exit the editor
    - `docker-compose up -d` or `docker-compose -f sync-state.yml up`


### Where is the data saved ?
In folder `./chain-data/chains/` you can find the chain data. 