PSBoardDataBase/docs/src/about_software.md

4.2 KiB

CurrentModule = PSBoardDataBase

Index

Pages = ["about_software.md"]
Depth = 4

このリポジトリのソフトウェアについての説明

このリポジトリにあるのは、JATHub masterのログファイル、及びGoogle SheetsからエクスポートしたCSVファイルからデータベースを作成するためのコードである。 メインの関数はcreate_database_from_exported_csvsである。

!!! info TLDR; データベースがほしいときは_Masterのログ_と_Slaveのログ_を用意して、create_database_from_exported_csvs julia create_database_from_exported_csvs( "database_name.db"; masterlog_dir = "dir/to/master/logs", slavelog_dir = "dir/to/slave/logs" )

動かし方

Juliajuliaupでインストールする。 リポジトリのルート(Project.tomlがある)で

$ julia --project

をするとJuliaのREPLが立ち上がる。

]をおしてPkgモードに入り、instantiateを実行すると、必要なパッケージを自動でインストールする。

backspaceでjulianモードに戻り(左側がjulia>になってる)、using PSBoardDataBaseをすると使えるようになる。

?を押すとhelpモードに入り、関数名などをいれるとそのドキュメント(下にあるものと同じ)が閲覧できる。

PSBoardDataBase.create_database_from_exported_csvsを検索すると使い方がわかる。

テストについて

テストでは実際にデータベースを作成している。 デフォルトでは全部は実行しないが、master logとslave logをおき、かつ環境変数LOCAL_TESTを設定することで、すべての工程を実行できる。1 用意するものの詳細は下に書いてある。

Pkgモード(]を押す)でtestとうつと実行できる。 環境変数の設定はENV["LOCAL_TEST"] = "1"とでも書く。 自動でsqlite browserを開く設定になっている。

Master logを用意する

start-shiftworkが生成するログファイル(同じリポジトリの../logのところ、通常はJATHub Masterにある)をtest/input/以下に置く。 以下のようにする。

$ 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を抽出するのに使われる。 最悪なくてもいいのでそのときは空のディレクトリを関数に渡す。

 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の出し方

using LocalCoverage
html_coverage(generate_coverage(), open = true)

Full testのほうが当然だがcoverageが高くなる。

新しいQAQCキャンペーン時に更新すべき内容

API

Modules = [PSBoardDataBase]

QaqcMasterLog

Modules = [QaqcMasterLog]

DownloadCSVs

Modules = [DownloadCSVs]

ClockParser

Modules = [ClockParser]

SlaveLogParser

部分的な実装。 そして活用も部分的。

Modules = [SlaveLogParser]

DispatchChecker

Modules = [DispatchChecker]

  1. master log fileはgitには入れたくないので、このような形態をとっている。 ↩︎