```@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] ```