Ejemplo n.º 1
0
func TestUpdateJob_ジョブの更新処理(t *testing.T) {
	conn, err := db.Open(db_name)
	if err != nil {
		t.Fatal(err)
	}
	defer conn.Close()

	jobres := &db.JobResult{
		ID:        122,
		JobId:     "JOB002",
		JobName:   "XYZ.vbs",
		StartDate: utctime.Now().String(),
		Status:    db.RUNNING,
		Node:      "TestNode02",
		Port:      9999,
	}
	err = InsertJob(conn, jobres, &mutex)
	if err != nil {
		t.Fatal("ジョブテーブルへの登録に失敗しました。 - ", err)
	}
	jobres.Status = db.ABNORMAL
	jobres.Variable = "VAR"
	jobres.EndDate = utctime.Now().String()
	jobres.Detail = "Attention!!"
	jobres.Rc = 4

	err = UpdateJob(conn, jobres, &mutex)
	if err != nil {
		t.Error("ジョブテーブルの更新に失敗しました。 - ", err)
	}
}
Ejemplo n.º 2
0
// ジョブネットワークレコードをInsertする。
func (r *ResultMap) insertJobNetwork() error {
	var isCommit bool
	tx, err := r.conn.GetDbMap().Begin()
	if err != nil {
		return err
	}
	defer func() {
		if !isCommit {
			tx.Rollback()
		}
	}()

	now := utctime.Now().String()
	r.JobnetResult.CreateDate = now
	r.JobnetResult.UpdateDate = now

	err = tx.Insert(r.JobnetResult)
	if err != nil {
		return err
	}
	if err = tx.Commit(); err != nil {
		return err
	}
	log.Debug(fmt.Sprintf("networkId[%v]", r.JobnetResult.ID))
	isCommit = true
	return nil
}
Ejemplo n.º 3
0
Archivo: jobtx.go Proyecto: unikk/cuto
// JOBテーブルへUPDATEする。
//
// param - conn DBコネクション
//
// param - job JOBレコード構造体ポインタ
func UpdateJob(conn db.IConnection, job *db.JobResult, mutex *sync.Mutex) error {
	mutex.Lock()
	defer mutex.Unlock()

	var isCommit bool
	tx, err := conn.GetDbMap().Begin()
	if err != nil {
		return err
	}
	defer func() {
		if !isCommit {
			tx.Rollback()
		}
	}()

	job.UpdateDate = utctime.Now().String()

	if _, err = tx.Update(job); err != nil {
		return err
	}
	if err = tx.Commit(); err != nil {
		return err
	}
	isCommit = true
	return nil
}
Ejemplo n.º 4
0
Archivo: main.go Proyecto: unikk/cuto
// 処理のメインルーチン
func realMain(args *arguments) int {
	if args.v { // バージョン情報表示
		showVersion()
		return rc_OK
	}
	if args.help { // Usage表示
		showUsage()
		return rc_OK
	}
	// 設定ファイル名の取得
	if len(args.config) == 0 {
		args.config = defaultConfig
	}
	if err := config.Load(args.config); err != nil { // 設定ファイル読み込み。
		console.DisplayError("CTU006E", args.config)
		return rc_PARMERR
	}
	if len(args.from) == 0 && len(args.to) == 0 { // From-to指定無しの場合は、現在のCPU日付のみを対象とする
		now := utctime.Now()
		if args.isUTC {
			args.from = now.Format(utctime.Date8Num)
			args.to = args.from
		} else {
			args.from = now.FormatLocaltime(utctime.Date8Num)
			args.to = args.from
		}
	}
	from, to, err := parseFromTo(args.from, args.to, args.isUTC)
	if err != nil {
		console.DisplayError("CTU003E", err)
		showUsage()
		return rc_PARMERR
	}
	status, err := getStatusType(args.status) // status取得
	if err != nil {
		console.DisplayError("CTU003E", fmt.Sprintf("Invalid status option. [%v]", args.status))
		showUsage()
		return rc_PARMERR
	}
	gen := getSeparatorType(args.format) // 出力形態
	if gen == nil {
		console.DisplayError("CTU003E", fmt.Sprintf("Invalid [format] format.[%v]", args.format))
		showUsage()
		return rc_PARMERR
	}
	param := NewShowParam(args.nid, args.jobnet, from, to, status, gen)
	rc, err := param.Run(config.DB.DBFile, args.isUTC)
	if err != nil {
		console.DisplayError("CTU004E", err)
		return rc_ERROR
	} else if rc == 0 { // 出力件数が0
		return rc_NOTHING
	}
	return rc_OK
}
Ejemplo n.º 5
0
// ジョブネットワークの開始状態を記録する。
//
// param : jobnetName ジョブネットワーク名。
//
// param : dbname データベース名。
//
// return : ジョブ実行結果を保持する構造体ポインタ。
//
// return : error
func StartJobNetwork(jobnetName string, dbname string) (*ResultMap, error) {
	jn := db.NewJobNetworkResult(jobnetName, utctime.Now().String(), db.RUNNING)

	conn, err := db.Open(dbname)
	if err != nil {
		return nil, err
	}
	resMap := &ResultMap{jn, make(JobMap), conn}

	if err := resMap.insertJobNetwork(); err != nil {
		return nil, err
	}
	return resMap, nil
}
Ejemplo n.º 6
0
func TestNewJobNetworkResult_初期化できる(t *testing.T) {
	name := "ABC"
	start := utctime.Now().String()
	status := NORMAL

	net := NewJobNetworkResult(name, start, status)
	if net.JobnetWork != name {
		t.Errorf("ジョブネット名を[%v]で初期化しましたが、[%v]が返りました。", name, net.JobnetWork)
	}
	if net.StartDate != start {
		t.Errorf("開始日時を[%v]で初期化しましたが、[%v]が返りました。", start, net.StartDate)
	}
	if net.Status != status {
		t.Errorf("ジョブネット名を[%v]で初期化しましたが、[%v]が返りました。", status, net.Status)
	}
}
Ejemplo n.º 7
0
func TestUpdateJob_ジョブの登録前に更新(t *testing.T) {
	conn, err := db.Open(dummy_db)
	if err != nil {
		t.Fatal(err)
	}
	defer conn.Close()

	jobres := &db.JobResult{
		ID:        132,
		JobId:     "JOB002",
		JobName:   "XYZ.vbs",
		StartDate: utctime.Now().String(),
		Status:    db.RUNNING,
		Node:      "TestNode02",
		Port:      9999,
	}
	err = UpdateJob(conn, jobres, &mutex)
	if err == nil {
		t.Error("予定していた失敗が返りませんでした。 - ")
	}
}
Ejemplo n.º 8
0
func TestInsertJob_ジョブの新規登録失敗(t *testing.T) {
	conn, err := db.Open(dummy_db)
	if err != nil {
		t.Fatal(err)
	}
	defer conn.Close()

	err = InsertJob(conn,
		&db.JobResult{
			ID:        131,
			JobId:     "JOB001",
			JobName:   "abcjob.bat",
			StartDate: utctime.Now().String(),
			Status:    db.RUNNING,
			Node:      "TestNode01",
			Port:      9999,
		}, &mutex)
	if err == nil {
		t.Error("予定していた失敗が返りませんでした。 - ")
	}
}
Ejemplo n.º 9
0
func TestInsertJob_ジョブの新規登録処理(t *testing.T) {
	conn, err := db.Open(db_name)
	if err != nil {
		t.Fatal(err)
	}
	defer conn.Close()

	err = InsertJob(conn,
		&db.JobResult{
			ID:        121,
			JobId:     "JOB001",
			JobName:   "abcjob.bat",
			StartDate: utctime.Now().String(),
			Status:    db.RUNNING,
			Node:      "TestNode01",
			Port:      9999,
		}, &mutex)
	if err != nil {
		t.Error("ジョブテーブルへの登録に失敗しました。 - ", err)
	}
}
Ejemplo n.º 10
0
// ジョブネットワークレコードをUpdateする。
func (r *ResultMap) updateJobNetwork() error {
	var isCommit bool
	tx, err := r.conn.GetDbMap().Begin()
	if err != nil {
		return err
	}
	defer func() {
		if !isCommit {
			tx.Rollback()
		}
	}()
	r.JobnetResult.UpdateDate = utctime.Now().String()

	if _, err = tx.Update(r.JobnetResult); err != nil {
		return err
	}
	if err = tx.Commit(); err != nil {
		return err
	}
	isCommit = true
	return nil
}
Ejemplo n.º 11
0
// ネットワーク終了時に結果情報を設定する。同時にDBコネクションも切断する。
//
// param : status ジョブネットワークのステータス。
//
// param : detail ジョブネットワークに記録する詳細メッセージ。
//
// return : error
func (r *ResultMap) EndJobNetwork(status int, detail string) error {
	if r.conn == nil {
		return fmt.Errorf("Can't access DB file.")
	}
	defer r.conn.Close()

	if r.JobnetResult == nil {
		return fmt.Errorf("Invalid Jobnetwork info.")
	}
	r.JobnetResult.EndDate = utctime.Now().String()
	r.JobnetResult.Status = status
	r.JobnetResult.Detail = detail

	for _, jobresult := range r.Jobresults {
		if r.JobnetResult.Status < jobresult.Status {
			r.JobnetResult.Status = jobresult.Status
		}
	}

	if err := r.updateJobNetwork(); err != nil {
		return err
	}
	return nil
}