github.com/hy3/cuto@v0.9.8-0.20160830082821-aa6652f877b7/master/jobnet/parser/jobex_test.go (about) 1 package parser 2 3 import ( 4 "strings" 5 "testing" 6 ) 7 8 func TestParseJobExFile_ファイルが存在しない場合は空のマップを返す(t *testing.T) { 9 jeMap, err := ParseJobExFile("noexistsfilepath") 10 if err != nil { 11 t.Fatalf("想定外のエラーが発生した: %s", err) 12 } 13 if jeMap == nil { 14 t.Fatal("空のマップではなく、nilが返された。") 15 } 16 if len(jeMap) != 0 { 17 t.Error("返されたマップが空ではない。") 18 } 19 } 20 21 func TestParseJobEx_拡張ジョブ定義CSVをパースできる(t *testing.T) { 22 csv := ` 23 ジョブ名,ノード名,ポート番号,実行ファイル,パラメータ,環境変数,作業フォルダ,警告コード,警告出力,異常コード,異常出力,タイムアウト 24 testjob1,123.45.67.89,1234,C:\work\test1.bat,testparam1,testenv1,C:\work1,10,warn1,11,err1,3600 25 testjob2,12.345.67.89,5678,C:\work\test2.bat,testparam2,testenv2,C:\work2,20,warn2,21,err2,3600` 26 27 r := strings.NewReader(csv) 28 jeMap, err := ParseJobEx(r) 29 if err != nil { 30 t.Fatalf("想定外のエラーが発生した: %s", err) 31 } 32 33 if len(jeMap) != 2 { 34 t.Fatalf("パース結果が2件になるはずが、%d件になった。", len(jeMap)) 35 } 36 37 j1, ok := jeMap["testjob1"] 38 if !ok { 39 t.Fatalf("パース結果にtestjob1がセットされていない。") 40 } 41 42 if j1.Node != `123.45.67.89` { 43 t.Errorf("testjob1のノード名のパース結果[%s]が間違っています。", j1.Node) 44 } 45 if j1.Port != 1234 { 46 t.Errorf("testjob1のポート番号のパース結果[%d]が間違っています。", j1.Port) 47 } 48 if j1.FilePath != `C:\work\test1.bat` { 49 t.Errorf("testjob1の実行ファイルパスのパース結果[%s]が間違っています。", j1.FilePath) 50 } 51 if j1.Param != `testparam1` { 52 t.Errorf("testjob1の実行時パラメータのパース結果[%s]が間違っています。", j1.Param) 53 } 54 if j1.Env != `testenv1` { 55 t.Errorf("testjob1の環境変数のパース結果[%s]が間違っています。", j1.Env) 56 } 57 if j1.WrnRC != 10 { 58 t.Errorf("testjob1の警告条件コードのパース結果[%d]が間違っています。", j1.WrnRC) 59 } 60 if j1.WrnPtn != `warn1` { 61 t.Errorf("testjob1の警告出力パターンのパース結果[%s]が間違っています。", j1.WrnPtn) 62 } 63 if j1.ErrRC != 11 { 64 t.Errorf("testjob1の異常条件コードのパース結果[%d]が間違っています。", j1.ErrRC) 65 } 66 if j1.ErrPtn != `err1` { 67 t.Errorf("testjob1の異常出力パターンのパース結果[%s]が間違っています。", j1.ErrPtn) 68 } 69 if j1.TimeoutMin != 3600 { 70 t.Errorf("testjob1の実行タイムアウト時間のパース結果[%d]が間違っています。", j1.TimeoutMin) 71 } 72 73 if _, ok := jeMap["testjob2"]; !ok { 74 t.Fatalf("パース結果にtestjob2がセットされていない。") 75 } 76 } 77 78 func TestParseJobEx_空のカラムにゼロ値がセットされる(t *testing.T) { 79 csv := ` 80 ジョブ名,ノード名,ポート番号,実行ファイル,パラメータ,環境変数,作業フォルダ,警告コード,警告出力,異常コード,異常出力,タイムアウト 81 testjob1,,,,,,,,,,,` 82 83 r := strings.NewReader(csv) 84 jeMap, err := ParseJobEx(r) 85 if err != nil { 86 t.Fatalf("想定外のエラーが発生した: %s", err) 87 } 88 89 if len(jeMap) != 1 { 90 t.Fatalf("パース結果が1件になるはずが、%d件になった。", len(jeMap)) 91 } 92 93 j1, ok := jeMap["testjob1"] 94 if !ok { 95 t.Fatalf("パース結果にtestjob1がセットされていない。") 96 } 97 98 if j1.Node != `` { 99 t.Errorf("testjob1のノード名のパース結果[%s]が間違っています。", j1.Node) 100 } 101 if j1.Port != 0 { 102 t.Errorf("testjob1のポート番号のパース結果[%d]が間違っています。", j1.Port) 103 } 104 if j1.FilePath != `` { 105 t.Errorf("testjob1の実行ファイルパスのパース結果[%s]が間違っています。", j1.FilePath) 106 } 107 if j1.Param != `` { 108 t.Errorf("testjob1の実行時パラメータのパース結果[%s]が間違っています。", j1.Param) 109 } 110 if j1.Env != `` { 111 t.Errorf("testjob1の環境変数のパース結果[%s]が間違っています。", j1.Env) 112 } 113 if j1.WrnRC != 0 { 114 t.Errorf("testjob1の警告条件コードのパース結果[%s]が間違っています。", j1.WrnRC) 115 } 116 if j1.WrnPtn != `` { 117 t.Errorf("testjob1の警告出力パターンのパース結果[%s]が間違っています。", j1.WrnPtn) 118 } 119 if j1.ErrRC != 0 { 120 t.Errorf("testjob1の異常条件コードのパース結果[%d]が間違っています。", j1.ErrRC) 121 } 122 if j1.ErrPtn != `` { 123 t.Errorf("testjob1の異常出力パターンのパース結果[%s]が間違っています。", j1.ErrPtn) 124 } 125 if j1.TimeoutMin != -1 { 126 t.Errorf("testjob1の実行タイムアウト時間のパース結果[%d]が間違っています。", j1.TimeoutMin) 127 } 128 if j1.SecondaryNode != `` { 129 t.Errorf("testjob1のセカンダリノード名のパース結果[%s]が間違っています。", j1.SecondaryNode) 130 } 131 if j1.SecondaryPort != 0 { 132 t.Errorf("testjob1のセカンダリポート番号のパース結果[%d]が間違っています。", j1.SecondaryPort) 133 } 134 } 135 136 func TestParseJobEx_ジョブ名が無い行はエラーとして無視する(t *testing.T) { 137 csv := ` 138 ジョブ名,ノード名,ポート番号,実行ファイル,パラメータ,環境変数,作業フォルダ,警告コード,警告出力,異常コード,異常出力,タイムアウト 139 ,123.45.67.89,1234,C:\work\test1.bat,testparam1,testenv1,C:\work1,10,warn1,11,err1,3600 140 testjob2,12.345.67.89,5678,C:\work\test2.bat,testparam2,testenv2,C:\work2,20,warn2,21,err2,3600` 141 142 r := strings.NewReader(csv) 143 jeMap, err := ParseJobEx(r) 144 if err != nil { 145 t.Fatalf("想定外のエラーが発生した: %s", err) 146 } 147 148 if len(jeMap) != 1 { 149 t.Fatalf("パース結果が2件になるはずが、%d件になった。", len(jeMap)) 150 } 151 152 if _, ok := jeMap["testjob2"]; !ok { 153 t.Fatalf("パース結果にtestjob2がセットされていない。") 154 } 155 } 156 157 func TestParseJobEx_セカンダリサーバント情報をパースできる(t *testing.T) { 158 csv := ` 159 ジョブ名,ノード名,ポート番号,実行ファイル,パラメータ,環境変数,作業フォルダ,警告コード,警告出力,異常コード,異常出力,タイムアウト,セカンダリ実行ノード,セカンダリポート番号 160 testjob1,123.45.67.89,1234,C:\work\test1.bat,testparam1,testenv1,C:\work1,10,warn1,11,err1,3600,secondary,12345 161 testjob2,12.345.67.89,5678,C:\work\test2.bat,testparam2,testenv2,C:\work2,20,warn2,21,err2,3600,,` 162 163 r := strings.NewReader(csv) 164 jeMap, err := ParseJobEx(r) 165 if err != nil { 166 t.Fatalf("想定外のエラーが発生した: %s", err) 167 } 168 169 if len(jeMap) != 2 { 170 t.Fatalf("パース結果が2件になるはずが、%d件になった。", len(jeMap)) 171 } 172 173 j1, ok := jeMap["testjob1"] 174 if !ok { 175 t.Fatalf("パース結果にtestjob1がセットされていない。") 176 } 177 178 if j1.SecondaryNode != `secondary` { 179 t.Errorf("testjob1のセカンダリノード名のパース結果[%s]が間違っています。", j1.SecondaryNode) 180 } 181 if j1.SecondaryPort != 12345 { 182 t.Errorf("testjob1のセカンダリポート番号のパース結果[%d]が間違っています。", j1.SecondaryPort) 183 } 184 185 j2, ok := jeMap["testjob2"] 186 if !ok { 187 t.Fatalf("パース結果にtestjob2がセットされていない。") 188 } 189 190 if j2.SecondaryNode != `` { 191 t.Errorf("testjob2のセカンダリノード名のパース結果[%s]が間違っています。", j2.SecondaryNode) 192 } 193 if j2.SecondaryPort != 0 { 194 t.Errorf("testjob2のセカンダリポート番号のパース結果[%d]が間違っています。", j2.SecondaryPort) 195 } 196 }