# Node simulator

### Build image & deploy步驟

* 在55/57環境上，先將WISEPaaS.DataHub.Nodejs.EdgeSimulator專案clone下來，並切換至simulator-1.0.1 branch

```
sudo git clone https://gitlab.wise-paas.com/DataHub/WISEPaaS.DataHub.Nodejs.EdgeSimulator.git
```

```
sudo git checkout simulator-1.0.1
```

* 在WISEPaaS.DataHub.Nodejs.EdgeSimulator資料夾下，clone WISEPaaS.DataHub.Edge.Nodejs.SDK，並切換至simulator-1.0.1 branch

```
sudo git clone https://gitlab.wise-paas.com/DataHub/WISEPaaS.DataHub.Edge.Nodejs.SDK.git
```

```
sudo git checkout simulator-1.0.1
```

* package.json我已經預設為:"wisepaas-scada-edge-nodejs-sdk": "file:WISEPaaS.DataHub.Edge.Nodejs.SDK"
* 執行以下指令，build image & push to habor

```
flag="harbor.arfa.wise-paas.com/datahub-dev/datahub-performer:1.0.0" \
&& sudo docker build -t=$flag --no-cache=true -f="./dockerfile" . \
&& sudo docker push $flag
```

* 在本機端註冊helm repo，可以參考datahub k8s deploy註冊的方式[點此連結](https://app.gitbook.com/@advwacloud/s/rd-newbie-readme/~/drafts/-MCplyKwS1kZdoSvrnH_/kai-fa-huan-jing/k8s_datahub_dev)
* 將WISEPaaS.DataHub.Nodejs.EdgeSimulator clone下來，使用專案目錄下的charts資料夾中的chart進行helm chart部屬
* 配置helm chart中的values.yaml，會需要修改的參數只有以下這幾個

![](https://3639912965-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4wburGGKab7MC2oOVd%2F-MCuYuercbgpmgxReQvs%2F-MCuZ7z4t7GHaIjz1rb_%2Fimage.png?alt=media\&token=c2c82ae1-9865-4352-a99e-a5b4ee7631fd)

* 修改玩values.yaml檔後，在Wise-Paas\WISEPaaS.SCADA.Nodejs.EdgeSimulator目錄下執行

```
helm install node-simulator ./charts
```

\*helm install \[欲部屬的deploy名稱] \[charts資料夾與現在路徑的相對路徑]

### 連進node-simulator pod進行壓測使用說明

* 使用kubectl get pod指令取得部屬的pod list，找到node-simulator部屬的pod name，範例如下

![](https://3639912965-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4wburGGKab7MC2oOVd%2F-MCta7EWCLH8FQ_iRtNx%2F-MCtay6VgjYNCh3bMMam%2Fimage.png?alt=media\&token=3d28c66f-d20f-428d-8998-ab2a138710d6)

* 在command line下kubectl exec -it \[pod name] /bin/bash指令如下，就可以連進去node-simulator的container內部

```
kubectl exec -it node-simulator-5bbd946bb7-kc68l /bin/bash
```

* 連進container後，在command line下ls指令，可以看到下圖中node-simulator的目錄結構

```
ls
```

![](https://3639912965-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4wburGGKab7MC2oOVd%2F-MCtb1cfzAybdCVslQgr%2F-MCtbul6PU22ShM896_R%2Fimage.png?alt=media\&token=c81fa44d-4b8e-45eb-84ba-4df443115f5d)

* 接著對setting.json進行配置，利用setting.sh用指令的方式幫你修改setting.json的內容，setting.sh的指令參數如下

```
//以下參數對應setting.json中的參數
host="" //對應mqttHost
port=1883 //對應mqttPort
username="" //對應mqttUserName
password="" //對應mqttPassword
scadaNums=1 //對應scadaNumbers
deviceNums=1 //對應deviceNumbers
tagNums=75 //對應tagNumbers
timeInterval=1000 //對應publishIntervalTime
exeTime=86400 //對應exectionTime，若為0則不停止
useSame=false //對應isUseSame
```

* 指令格式: ./setting.sh paramName1=value1 paramName2=value2 paramName3=value3 ...\
  \*可以任選上面的參數填入想修改的值，(意思是可以全部都填，也可以選擇想改的參數填入就好)，以下兩種範例都舉例

```
./setting.sh host="rabbitmq-001-pub.sa.wise-paas.com" port=1883 username="03bdd820-4d47-40a2-9aff-85613c201b58:61734256-adfet-477f-9b3f-fswerwerad" password="aqetdfhwehqwthlqw" scadaNums=100 deviceNums=1 tagNums=1000 timeInterval=1000 useSame=false
```

```
./setting.sh host="rabbitmq-001-pub.sa.wise-paas.com" scadaNums=100 deviceNums=10
```

* 執行完畢後會顯示修改的內容，如下圖

![](https://3639912965-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4wburGGKab7MC2oOVd%2F-MCteNpluugOzAvjdD5s%2F-MCtjWMxWSc0KtyyAv46%2Fimage.png?alt=media\&token=48ab84f8-c711-449b-aae3-4b73a94becc9)

* 若修改正確執行node index.js啟動模擬，若修改不正確回上一步重新執行修改

```
node index.js //執行模擬
```
