PSBoardDataBase/docs/src/about_software.md

152 lines
4.1 KiB
Markdown

```@meta
CurrentModule = PSBoardDataBase
```
# Index
```@contents
Pages = ["about_software.md"]
Depth = 4
```
# このリポジトリのソフトウェアについての説明
このリポジトリにあるのは、JATHub masterのログファイル、及びGoogle SheetsからエクスポートしたCSVファイルからデータベースを作成するためのコードである。
メインの関数は[`create_database`](@ref)である。
!!! info
**TLDR**;
データベースがほしいときは_Masterのログ_と_Slaveのログ_を用意して、[`create_database`](@ref)
```julia
create_database(
"database_name.db";
masterlog_dir = "dir/to/master/logs",
slavelog_dir = "dir/to/slave/logs"
)
```
## 動かし方
[Julia](https://julialang.org)は[juliaup](https://github.com/JuliaLang/juliaup)でインストールする。
リポジトリのルート(`Project.toml`がある)で
```
$ julia --project
```
をするとJuliaのREPLが立ち上がる。
`]`をおして`Pkg`モードに入り、`instantiate`を実行すると、必要なパッケージを自動でインストールする。
backspaceでjulianモードに戻り(左側が`julia>`になってる)、`using PSBoardDataBase`をすると使えるようになる。
`?`を押すとhelpモードに入り、関数名などをいれるとそのドキュメント(下にあるものと同じ)が閲覧できる。
`PSBoardDataBase.create_database`を検索すると使い方がわかる。
# テストについて
テストでは実際にデータベースを作成している。
デフォルトでは全部は実行しないが、master logとslave logをおき、かつ環境変数`LOCAL_TEST`を設定することで、すべての工程を実行できる。[^1]
用意するものの詳細は下に書いてある。
Pkgモード(`]`を押す)で`test`とうつと実行できる。
環境変数の設定は`ENV["LOCAL_TEST"] = "1"`とでも書く。
自動でsqlite browserを開く設定になっている。
[^1]: master log fileはgitには入れたくないので、このような形態をとっている。
## Master logを用意する
[`start-shiftwork`](https://gitlab.cern.ch/dhashimo/PS_Board_QAQC/-/blob/master/Software_Test/ShiftWorks/script/start-shiftwork?ref_type=heads)が生成するログファイル(同じリポジトリの`../log`のところ、通常はJATHub Masterにある)を`test/input/`以下に置く。
以下のようにする。
```sh
$ tree -L 2 test/input/
test/input/
└── log
├── 100.log
├── 101_long.log
├── 102_long.log
├── 103.log
├── 104_long.log
├── 105.log
├── 106_long.log
├── 107.log
├── 108_long.log
├── 109_long.log
├── 110.log
...
```
## Slave logを用意する
同様にJATHub slaveで作られるログも用意する。
これはskewを抽出するのに使われる。
最悪なくてもいいのでそのときは空のディレクトリを関数に渡す。
```sh
tree -L 2 test/input/slavelogs/ | head -n 10
test/input/slavelogs/
└── main
├── 101_28_longrun.txt
├── 101_29.txt
├── 101_29_clk.txt
├── 103_28_longrun.txt
├── 103_29.txt
├── 103_29_clk.txt
├── 103_89.txt
├── 103_89_clk.txt
```
## Coverage Reportの出し方
```julia
using LocalCoverage
html_coverage(generate_coverage(), open = true)
```
Full testのほうが当然だがcoverageが高くなる。
# 新しいQAQCキャンペーン時に更新すべき内容
- [`PSBoardDataBase.insert_qaqc_campaign_id`](@ref): キャンペーンの日時
- [`PSBoardDataBase.get_campaign_id_from_run_id`](@ref): runidとの関係
# API
```@index
```
```@autodocs
Modules = [PSBoardDataBase]
```
## `QaqcMasterLog`
```@autodocs
Modules = [QaqcMasterLog]
```
## `DownloadCSVs`
```@autodocs
Modules = [DownloadCSVs]
```
## `ClockParser`
```@autodocs
Modules = [ClockParser]
```
## `SlaveLogParser`
部分的な実装。
そして活用も部分的。
```@autodocs
Modules = [SlaveLogParser]
```
## `DispatchChecker`
```@autodocs
Modules = [DispatchChecker]
```