Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mogo
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Odysseus
mogo
Commits
dea45e42
Commit
dea45e42
authored
May 29, 2024
by
vicotor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update test code
parent
12a76686
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
162 additions
and
16 deletions
+162
-16
workerInstalledInfo.go
operator/workerInstalledInfo.go
+3
-3
workerInstalledInfo_test.go
operator/workerInstalledInfo_test.go
+120
-0
workerinfo.go
operator/workerinfo.go
+20
-0
workerinfo_test.go
operator/workerinfo_test.go
+19
-13
No files found.
operator/workerInstalledInfo.go
View file @
dea45e42
...
...
@@ -22,7 +22,7 @@ type WorkerInstalledOperator struct {
func
NewDBWorkerInstalled
(
client
*
mongo
.
Client
,
database
string
)
*
WorkerInstalledOperator
{
return
&
WorkerInstalledOperator
{
client
:
client
,
col
:
client
.
Database
(
database
)
.
Collection
(
"worker_
running
_info"
),
col
:
client
.
Database
(
database
)
.
Collection
(
"worker_
installed
_info"
),
}
}
...
...
@@ -30,9 +30,9 @@ func (d *WorkerInstalledOperator) Insert(ctx context.Context, worker *WorkerInst
return
d
.
col
.
InsertOne
(
ctx
,
worker
)
}
func
(
d
*
WorkerInstalledOperator
)
UpdateGpuFree
(
ctx
context
.
Context
,
id
string
,
gpuFree
int64
)
error
{
func
(
d
*
WorkerInstalledOperator
)
UpdateGpuFree
(
ctx
context
.
Context
,
worker
id
string
,
gpuFree
int64
)
error
{
update
:=
bson
.
M
{
"$set"
:
bson
.
M
{
"gpu_free"
:
gpuFree
}}
_
,
err
:=
d
.
col
.
Update
One
(
ctx
,
bson
.
M
{
"_id"
:
id
},
update
)
_
,
err
:=
d
.
col
.
Update
Many
(
ctx
,
bson
.
M
{
"worker_id"
:
worker
id
},
update
)
return
err
}
...
...
operator/workerInstalledInfo_test.go
0 → 100644
View file @
dea45e42
package
operator
import
(
"context"
"fmt"
"log"
"math/rand"
"strconv"
"testing"
)
func
TestWorkerInstalledOperator_Insert
(
t
*
testing
.
T
)
{
client
,
err
:=
ConnectMongoDB
(
"mongodb://localhost:27017"
,
"admin"
,
"admin"
)
if
err
!=
nil
{
log
.
Fatal
(
err
)
}
count
:=
1
infodb
:=
NewDBWorker
(
client
,
database
)
defer
infodb
.
client
.
Disconnect
(
context
.
Background
())
db
:=
NewDBWorkerInstalled
(
client
,
database
)
defer
db
.
client
.
Disconnect
(
context
.
Background
())
rundb
:=
NewDBWorkerRunning
(
client
,
database
)
defer
rundb
.
client
.
Disconnect
(
context
.
Background
())
for
i
:=
0
;
i
<
count
;
i
++
{
worker
:=
generateAWroker
()
infodb
.
InsertWorker
(
context
.
Background
(),
worker
)
for
_
,
installed
:=
range
worker
.
Models
.
InstalledModels
{
id
,
_
:=
strconv
.
Atoi
(
installed
.
ModelID
)
_
,
err
:=
db
.
Insert
(
context
.
Background
(),
&
WorkerInstalledInfo
{
WorkerId
:
worker
.
WorkerId
,
ModelId
:
id
,
GpuFree
:
10011
,
})
if
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"insert worker failed with err:%s"
,
err
))
}
}
for
_
,
running
:=
range
worker
.
Models
.
RunningModels
{
id
,
_
:=
strconv
.
Atoi
(
running
.
ModelID
)
_
,
err
:=
rundb
.
Insert
(
context
.
Background
(),
&
WorkerRunningInfo
{
WorkerId
:
worker
.
WorkerId
,
ModelId
:
id
,
ExecTime
:
100
,
})
if
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"insert worker failed with err:%s"
,
err
))
}
}
}
}
func
BenchmarkWorkerInstalledOperator_UpdateGpuFree
(
b
*
testing
.
B
)
{
client
,
err
:=
ConnectMongoDB
(
"mongodb://localhost:27017"
,
"admin"
,
"admin"
)
if
err
!=
nil
{
log
.
Fatal
(
err
)
}
infodb
:=
NewDBWorker
(
client
,
database
)
defer
infodb
.
client
.
Disconnect
(
context
.
Background
())
db
:=
NewDBWorkerInstalled
(
client
,
database
)
defer
db
.
client
.
Disconnect
(
context
.
Background
())
allWorker
,
err
:=
infodb
.
GetAllWorkerId
(
context
.
Background
())
if
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"get all worker failed with err:%s"
,
err
))
}
b
.
ResetTimer
()
for
i
:=
0
;
i
<
b
.
N
;
i
++
{
idx
:=
rand
.
Intn
(
len
(
allWorker
))
workerid
:=
allWorker
[
idx
]
gpufree
:=
rand
.
Intn
(
100
)
+
12000
if
err
:=
db
.
UpdateGpuFree
(
context
.
Background
(),
workerid
,
int64
(
gpufree
));
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"update worker failed with err:%s"
,
err
))
}
}
}
func
BenchmarkWorkerInstalledOperator_UpdateGpuFree_Parallel
(
b
*
testing
.
B
)
{
client
,
err
:=
ConnectMongoDB
(
"mongodb://localhost:27017"
,
"admin"
,
"admin"
)
if
err
!=
nil
{
log
.
Fatal
(
err
)
}
infodb
:=
NewDBWorker
(
client
,
database
)
defer
infodb
.
client
.
Disconnect
(
context
.
Background
())
db
:=
NewDBWorkerInstalled
(
client
,
database
)
defer
db
.
client
.
Disconnect
(
context
.
Background
())
allWorker
,
err
:=
infodb
.
GetAllWorkerId
(
context
.
Background
())
if
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"get all worker failed with err:%s"
,
err
))
}
b
.
ResetTimer
()
b
.
RunParallel
(
func
(
pb
*
testing
.
PB
)
{
for
pb
.
Next
()
{
idx
:=
rand
.
Intn
(
len
(
allWorker
))
workerid
:=
allWorker
[
idx
]
gpufree
:=
rand
.
Intn
(
100
)
+
12000
if
err
:=
db
.
UpdateGpuFree
(
context
.
Background
(),
workerid
,
int64
(
gpufree
));
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"update worker failed with err:%s"
,
err
))
}
}
})
}
func
TestWorkerInstalledOperator_UpdateGpuFree
(
t
*
testing
.
T
)
{
client
,
err
:=
ConnectMongoDB
(
"mongodb://localhost:27017"
,
"admin"
,
"admin"
)
if
err
!=
nil
{
log
.
Fatal
(
err
)
}
db
:=
NewDBWorkerInstalled
(
client
,
database
)
defer
db
.
client
.
Disconnect
(
context
.
Background
())
workerid
:=
"ebb6a2df-9e91-4b3c-ace8-748aaeca718c"
gpufree
:=
102222
if
err
:=
db
.
UpdateGpuFree
(
context
.
Background
(),
workerid
,
int64
(
gpufree
));
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"update worker failed with err:%s"
,
err
))
}
}
operator/workerinfo.go
View file @
dea45e42
...
...
@@ -28,6 +28,26 @@ func NewDBWorker(client *mongo.Client, database string) *WorkerInfoOperator {
}
}
func
(
d
*
WorkerInfoOperator
)
GetAllWorkerId
(
ctx
context
.
Context
)
([]
string
,
error
)
{
filter
:=
bson
.
D
{}
opts
:=
options
.
Find
()
.
SetProjection
(
bson
.
D
{{
"worker_id"
,
1
}})
cursor
,
err
:=
d
.
col
.
Find
(
ctx
,
filter
,
opts
)
if
err
!=
nil
{
return
nil
,
err
}
defer
cursor
.
Close
(
ctx
)
var
results
[]
WorkerInfo
if
err
=
cursor
.
All
(
context
.
TODO
(),
&
results
);
err
!=
nil
{
return
nil
,
err
}
var
workerIds
[]
string
for
_
,
result
:=
range
results
{
workerIds
=
append
(
workerIds
,
result
.
WorkerId
)
}
return
workerIds
,
err
}
func
(
d
*
WorkerInfoOperator
)
InsertWorker
(
ctx
context
.
Context
,
worker
*
WorkerInfo
)
(
*
mongo
.
InsertOneResult
,
error
)
{
return
d
.
col
.
InsertOne
(
ctx
,
worker
)
}
...
...
operator/workerinfo_test.go
View file @
dea45e42
...
...
@@ -6,12 +6,12 @@ import (
"encoding/hex"
"fmt"
"github.com/google/uuid"
"github.com/odysseus/mogo/types"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
"math/rand"
"mogo/types"
"strconv"
"testing"
"time"
...
...
@@ -21,9 +21,10 @@ var (
maxModelId
=
10000
idlist
=
make
([]
string
,
0
,
1000000
)
//workers = make([]*DbWorkerInfo, 0, 1000000)
database
=
"test"
collection
=
"workers"
workerRunningCollection
=
"worker_running"
database
=
"test"
collection
=
"workers"
workerRunningCollection
=
"worker_running"
workerInstalledCollection
=
"worker_installed"
)
func
ConnectMongoDB
(
uri
string
,
username
,
passwd
string
)
(
*
mongo
.
Client
,
error
)
{
...
...
@@ -39,13 +40,13 @@ func ConnectMongoDB(uri string, username, passwd string) (*mongo.Client, error)
return
client
,
nil
}
func
init
()
{
client
,
err
:=
ConnectMongoDB
(
"mongodb://localhost:27017"
,
"admin"
,
"admin"
)
if
err
!=
nil
{
log
.
Fatal
(
err
)
}
idlist
=
initdata
(
client
)
}
//
func init() {
//
client, err := ConnectMongoDB("mongodb://localhost:27017", "admin", "admin")
//
if err != nil {
//
log.Fatal(err)
//
}
//
idlist = initdata(client)
//
}
func
initdata
(
client
*
mongo
.
Client
)
[]
string
{
t1
:=
time
.
Now
()
...
...
@@ -202,6 +203,11 @@ func generateAHardware() *types.HardwareInfo {
generateAIdleGpu
(
0
),
generateAIdleGpu
(
1
),
generateAUsageGpu
(
2
),
generateAUsageGpu
(
3
),
generateAUsageGpu
(
4
),
generateAUsageGpu
(
5
),
generateAUsageGpu
(
6
),
generateAUsageGpu
(
7
),
},
RAM
:
generateARam
(),
DISK
:
generateADisk
(),
...
...
@@ -235,9 +241,9 @@ func generateAModel() *types.ModelInfo {
InstalledModels
:
make
([]
*
types
.
InstalledModel
,
0
,
1000
),
RunningModels
:
make
([]
*
types
.
RunningModel
,
0
,
1000
),
}
for
i
:=
0
;
i
<
5
00
;
i
++
{
for
i
:=
0
;
i
<
1
00
;
i
++
{
m
.
InstalledModels
=
append
(
m
.
InstalledModels
,
generateAInstallModel
())
if
len
(
m
.
RunningModels
)
<
5
00
{
if
len
(
m
.
RunningModels
)
<
1
00
{
m
.
RunningModels
=
append
(
m
.
RunningModels
,
generateARunningModel
())
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment