Skip to content
Snippets Groups Projects
Select Git revision
  • f68f71f94d9f1be5143fe12dd572080090e63d8c
  • master default protected
  • 1.31
  • 4.24.2
  • 4.24.1
  • 4.24.0
  • 4.23.6
  • 4.23.5
  • 4.23.4
  • 4.23.3
  • 4.23.2
  • 4.23.1
  • 4.23.0
  • 4.22.3
  • 4.22.2
  • 4.22.1
  • 4.22.0
  • 4.21.0
  • 4.20.1
  • 4.20.0
  • 4.19.0
  • 4.18.0
  • 4.17.0
23 results

tree-menu.mjs

Blame
  • database-6_test.go 2.02 KiB
    //go:build !runOnTask
    
    // Copyright 2023 schukai GmbH
    // SPDX-License-Identifier: AGPL-3.0
    package jobqueue
    
    import (
    	"fmt"
    	"github.com/stretchr/testify/assert"
    	"gorm.io/driver/sqlite"
    	"gorm.io/gorm"
    	"testing"
    	"time"
    )
    
    func TestWriteToDB6(t *testing.T) {
    
    	// it is necessary to have a running mysql server
    	// docker rm -f mysql-test && \
    	// docker run --name mysql-test -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=testdb -p 3306:3306 -d mysql:latest && \
    	// docker logs -f mysql-test
    
    	//dsn := "root:my-secret-pw@tcp(localhost:3306)/testdb?charset=utf8mb4&parseTime=True&loc=Local"
    	//db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    
    	gormDB, err := gorm.Open(sqlite.Open("file:unique_id?mode=memory&cache=shared"), &gorm.Config{})
    	if err != nil {
    		t.Fatalf("an error occurred while opening the database: %v", err)
    	}
    	t.Cleanup(func() {
    		sqlDB, err := gormDB.DB()
    		if err != nil {
    			t.Fatalf("failed to get generic database object from GORM DB: %v", err)
    		}
    		_ = sqlDB.Close()
    	})
    
    	db := gormDB
    
    	manager := NewManager()
    	manager.SetDB(db)
    	err = manager.AddWorker(NewLocalWorker(1))
    	assert.Nil(t, err)
    
    	err = manager.Start()
    	assert.Nil(t, err)
    
    	mgr := manager
    
    	numJobs := 1000
    	jobIDs := make([]JobID, numJobs)
    
    	for i := 0; i < numJobs; i++ {
    		jobID := JobID(fmt.Sprintf("burstJobA%d", i))
    		jobIDs[i] = jobID
    
    		runner := &CounterRunnable{}
    		job := NewJob[CounterResult](jobID, runner)
    
    		scheduler := &InstantScheduler{}
    		err = mgr.ScheduleJob(job, scheduler)
    		assert.Nil(t, err)
    
    		mgr.mu.Lock()
    		mgr.jobSyncer.Sync(job)
    		mgr.mu.Unlock()
    		time.Sleep(10 * time.Millisecond)
    
    	}
    
    	manager.WaitSync()
    
    	time.Sleep(2 * time.Second)
    
    	for _, jobID := range jobIDs {
    		var tmpJob JobPersistence
    		err = db.First(&tmpJob, "id = ?", jobID).Error
    		if err != nil {
    			t.Errorf("Job id %s not found in database: %v", jobID, err)
    		}
    	}
    
    	// check if all jobs are in the database
    	var jobCount int64
    	err = db.Model(&JobPersistence{}).Count(&jobCount).Error
    	assert.Nil(t, err)
    	assert.Equal(t, int64(numJobs), jobCount)
    
    }