Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Nomad
Commits
c2cb2cc1
Commit
c2cb2cc1
authored
8 years ago
by
Alex Dadgar
Browse files
Options
Download
Email Patches
Plain Diff
Fix test and prevent job with payload from being submitted
parent
732cce5d
Branches unavailable
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc.1
v1.4.0-beta.1
v1.3.8
v1.3.7
v1.3.6
v1.3.5
v1.3.4
v1.3.3
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc.1
v1.3.0-beta.1
v1.2.15
v1.2.14
v1.2.13
v1.2.12
v1.2.11
v1.2.10
v1.2.9
v1.2.8
v1.2.7
v1.2.6
v1.2.5
v1.2.4
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc1
v1.2.0-beta1
v1.1.18
v1.1.17
v1.1.16
v1.1.15
v1.1.14
v1.1.13
v1.1.12
v1.1.11
v1.1.10
v1.1.9
v1.1.8
v1.1.7
v1.1.6
v1.1.5
v1.1.4
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.1.0-rc1
v1.1.0-beta1
v1.0.18
v1.0.17
v1.0.16
v1.0.15
v1.0.14
v1.0.13
v1.0.12
v1.0.11
v1.0.10
v1.0.9
v1.0.8
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3
v1.0.2
v1.0.1
v1.0.0
v1.0.0-rc1
v1.0.0-beta3
v1.0.0-beta2
v0.12.12
v0.12.11
v0.12.10
v0.12.9
v0.12.8
v0.12.7
v0.12.6
v0.12.5
v0.12.4
v0.12.4-rc1
v0.12.3
v0.12.2
v0.12.1
v0.12.0
v0.12.0-rc1
v0.12.0-beta2
v0.12.0-beta1
v0.11.8
v0.11.7
v0.11.6
v0.11.5
v0.11.4
v0.11.3
v0.11.2
v0.11.1
v0.11.0
v0.11.0-rc1
v0.11.0-beta2
v0.11.0-beta1
v0.10.9
v0.10.8
v0.10.7
v0.10.6
v0.10.5
v0.10.4
v0.10.4-rc1
v0.10.3
v0.10.2
v0.10.2-rc1
v0.10.1
v0.10.0
v0.10.0-rc1
v0.10.0-connect1
v0.10.0-beta1
v0.9.7
v0.9.6
v0.9.5
v0.9.4
v0.9.4-rc1
v0.9.3
v0.9.2
v0.9.2-rc1
v0.9.1
v0.9.1-rc1
v0.9.0
v0.9.0-rc2
v0.9.0-rc1
v0.9.0-beta3
v0.9.0-beta2
v0.9.0-beta1
v0.8.7
v0.8.7-rc1
v0.8.6
v0.8.5
v0.8.4
v0.8.4-rc1
v0.8.3
v0.8.2
v0.8.1
v0.8.0
v0.8.0-rc1
v0.7.1
v0.7.1-rc1
v0.7.1-rc1+pro
v0.7.1-rc1+ent
v0.7.0
v0.7.0+pro
v0.7.0+ent
v0.7.0-rc3
v0.7.0-rc2
v0.7.0-rc1
v0.7.0-beta1
v0.6.3
v0.6.3-rc1
v0.6.2
v0.6.1
v0.6.0
v0.6.0-rc2
v0.6.0-rc1
v0.5.6
v0.5.6-rc1
v0.5.5
v0.5.5-rc2
v0.5.5-rc1
v0.5.4
v0.5.3
v0.5.3-rc1
nightly
No related merge requests found
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
client/driver/driver_test.go
+1
-0
client/driver/driver_test.go
command/agent/job_endpoint_test.go
+1
-0
command/agent/job_endpoint_test.go
nomad/job_endpoint.go
+4
-0
nomad/job_endpoint.go
nomad/job_endpoint_test.go
+37
-0
nomad/job_endpoint_test.go
nomad/structs/structs.go
+2
-2
nomad/structs/structs.go
with
45 additions
and
2 deletions
+45
-2
client/driver/driver_test.go
+
1
-
0
View file @
c2cb2cc1
...
...
@@ -118,6 +118,7 @@ func TestDriver_GetTaskEnv(t *testing.T) {
}
alloc
:=
mock
.
Alloc
()
alloc
.
Job
.
TaskGroups
[
0
]
.
Tasks
[
0
]
=
task
alloc
.
Name
=
"Bar"
env
,
err
:=
GetTaskEnv
(
nil
,
nil
,
task
,
alloc
,
""
)
if
err
!=
nil
{
...
...
This diff is collapsed.
Click to expand it.
command/agent/job_endpoint_test.go
+
1
-
0
View file @
c2cb2cc1
...
...
@@ -584,6 +584,7 @@ func TestHTTP_JobDispatch(t *testing.T) {
httpTest
(
t
,
nil
,
func
(
s
*
TestServer
)
{
// Create the constructor job
job
:=
mock
.
Job
()
job
.
Type
=
structs
.
JobTypeBatch
job
.
Constructor
=
&
structs
.
ConstructorConfig
{}
args
:=
structs
.
JobRegisterRequest
{
...
...
This diff is collapsed.
Click to expand it.
nomad/job_endpoint.go
+
4
-
0
View file @
c2cb2cc1
...
...
@@ -773,6 +773,10 @@ func validateJob(job *structs.Job) error {
multierror
.
Append
(
validationErrors
,
fmt
.
Errorf
(
"job type cannot be core"
))
}
if
len
(
job
.
Payload
)
!=
0
{
multierror
.
Append
(
validationErrors
,
fmt
.
Errorf
(
"job can't be submitted with a payload, only dispatched"
))
}
return
validationErrors
.
ErrorOrNil
()
}
...
...
This diff is collapsed.
Click to expand it.
nomad/job_endpoint_test.go
+
37
-
0
View file @
c2cb2cc1
...
...
@@ -116,6 +116,35 @@ func TestJobEndpoint_Register_InvalidDriverConfig(t *testing.T) {
}
}
func
TestJobEndpoint_Register_Payload
(
t
*
testing
.
T
)
{
s1
:=
testServer
(
t
,
func
(
c
*
Config
)
{
c
.
NumSchedulers
=
0
// Prevent automatic dequeue
})
defer
s1
.
Shutdown
()
codec
:=
rpcClient
(
t
,
s1
)
testutil
.
WaitForLeader
(
t
,
s1
.
RPC
)
// Create the register request with a job containing an invalid driver
// config
job
:=
mock
.
Job
()
job
.
Payload
=
[]
byte
{
0x1
}
req
:=
&
structs
.
JobRegisterRequest
{
Job
:
job
,
WriteRequest
:
structs
.
WriteRequest
{
Region
:
"global"
},
}
// Fetch the response
var
resp
structs
.
JobRegisterResponse
err
:=
msgpackrpc
.
CallWithCodec
(
codec
,
"Job.Register"
,
req
,
&
resp
)
if
err
==
nil
{
t
.
Fatalf
(
"expected a validation error"
)
}
if
!
strings
.
Contains
(
err
.
Error
(),
"payload"
)
{
t
.
Fatalf
(
"expected a payload error but got: %v"
,
err
)
}
}
func
TestJobEndpoint_Register_Existing
(
t
*
testing
.
T
)
{
s1
:=
testServer
(
t
,
func
(
c
*
Config
)
{
c
.
NumSchedulers
=
0
// Prevent automatic dequeue
...
...
@@ -259,6 +288,7 @@ func TestJobEndpoint_Register_Constructor(t *testing.T) {
// Create the register request for a constructor job.
job
:=
mock
.
Job
()
job
.
Type
=
structs
.
JobTypeBatch
job
.
Constructor
=
&
structs
.
ConstructorConfig
{}
req
:=
&
structs
.
JobRegisterRequest
{
Job
:
job
,
...
...
@@ -766,6 +796,7 @@ func TestJobEndpoint_Evaluate_Constructor(t *testing.T) {
// Create the register request
job
:=
mock
.
Job
()
job
.
Type
=
structs
.
JobTypeBatch
job
.
Constructor
=
&
structs
.
ConstructorConfig
{}
req
:=
&
structs
.
JobRegisterRequest
{
Job
:
job
,
...
...
@@ -983,6 +1014,7 @@ func TestJobEndpoint_Deregister_Constructor(t *testing.T) {
// Create the register request
job
:=
mock
.
Job
()
job
.
Type
=
structs
.
JobTypeBatch
job
.
Constructor
=
&
structs
.
ConstructorConfig
{}
reg
:=
&
structs
.
JobRegisterRequest
{
Job
:
job
,
...
...
@@ -1860,28 +1892,33 @@ func TestJobEndpoint_Dispatch(t *testing.T) {
// No requirements
d1
:=
mock
.
Job
()
d1
.
Type
=
structs
.
JobTypeBatch
d1
.
Constructor
=
&
structs
.
ConstructorConfig
{}
// Require input data
d2
:=
mock
.
Job
()
d2
.
Type
=
structs
.
JobTypeBatch
d2
.
Constructor
=
&
structs
.
ConstructorConfig
{
Payload
:
structs
.
DispatchPayloadRequired
,
}
// Disallow input data
d3
:=
mock
.
Job
()
d3
.
Type
=
structs
.
JobTypeBatch
d3
.
Constructor
=
&
structs
.
ConstructorConfig
{
Payload
:
structs
.
DispatchPayloadForbidden
,
}
// Require meta
d4
:=
mock
.
Job
()
d4
.
Type
=
structs
.
JobTypeBatch
d4
.
Constructor
=
&
structs
.
ConstructorConfig
{
MetaRequired
:
[]
string
{
"foo"
,
"bar"
},
}
// Optional meta
d5
:=
mock
.
Job
()
d5
.
Type
=
structs
.
JobTypeBatch
d5
.
Constructor
=
&
structs
.
ConstructorConfig
{
MetaOptional
:
[]
string
{
"foo"
,
"bar"
},
}
...
...
This diff is collapsed.
Click to expand it.
nomad/structs/structs.go
+
2
-
2
View file @
c2cb2cc1
...
...
@@ -2477,7 +2477,7 @@ func (t *Task) Validate(ephemeralDisk *EphemeralDisk) error {
// Validate the dispatch input block if there
if
t
.
DispatchInput
!=
nil
{
if
err
:=
t
.
DispatchInput
.
Validate
();
err
!=
nil
{
mErr
.
Errors
=
append
(
mErr
.
Errors
,
err
)
mErr
.
Errors
=
append
(
mErr
.
Errors
,
fmt
.
Errorf
(
"Dispatch Input validation failed: %v"
,
err
)
)
}
}
...
...
@@ -3006,7 +3006,7 @@ func (ta *TaskArtifact) Validate() error {
if
err
!=
nil
{
mErr
.
Errors
=
append
(
mErr
.
Errors
,
fmt
.
Errorf
(
"invalid destination path: %v"
,
err
))
}
else
if
escaped
{
mErr
.
Errors
=
append
(
mErr
.
Errors
,
fmt
.
Errorf
(
"destination escapes
task's
directory"
))
mErr
.
Errors
=
append
(
mErr
.
Errors
,
fmt
.
Errorf
(
"destination escapes
allocation
directory"
))
}
// Verify the checksum
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
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
Menu
Projects
Groups
Snippets
Help