This is an automated email from the ASF dual-hosted git repository.
ccondit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yunikorn-core.git
The following commit(s) were added to refs/heads/master by this push:
new dd98009c [YUNIKORN-1805] Create smoke test to validate application
tracking via REST interface (#624)
dd98009c is described below
commit dd98009c42da1d3284bc1846c277129c58e079c7
Author: Peter Bacsko <[email protected]>
AuthorDate: Wed Aug 23 10:14:39 2023 -0500
[YUNIKORN-1805] Create smoke test to validate application tracking via REST
interface (#624)
Closes: #624
Signed-off-by: Craig Condit <[email protected]>
---
pkg/entrypoint/entrypoint.go | 11 +
pkg/scheduler/tests/application_tracking_test.go | 261 +++++++++++++++++++++++
pkg/scheduler/tests/mockscheduler_test.go | 10 +-
pkg/scheduler/tests/operation_test.go | 10 +-
pkg/scheduler/tests/plugin_test.go | 2 +-
pkg/scheduler/tests/recovery_test.go | 14 +-
pkg/scheduler/tests/reservation_test.go | 10 +-
pkg/scheduler/tests/restclient.go | 70 ++++++
pkg/scheduler/tests/smoke_test.go | 24 +--
9 files changed, 375 insertions(+), 37 deletions(-)
diff --git a/pkg/entrypoint/entrypoint.go b/pkg/entrypoint/entrypoint.go
index 4f164faa..350c8171 100644
--- a/pkg/entrypoint/entrypoint.go
+++ b/pkg/entrypoint/entrypoint.go
@@ -48,6 +48,17 @@ func StartAllServices() *ServiceContext {
})
}
+// VisibleForTesting
+func StartAllServicesWithParams(manualSchedule, withWebapp bool)
*ServiceContext {
+ log.Log(log.Entrypoint).Info("ServiceContext start all services")
+ return startAllServicesWithParameters(
+ startupOptions{
+ manualScheduleFlag: manualSchedule,
+ startWebAppFlag: withWebapp,
+ metricsHistorySize: 1440,
+ })
+}
+
func StartAllServicesWithLogger(logger *zap.Logger, zapConfigs *zap.Config)
*ServiceContext {
log.InitializeLogger(logger, zapConfigs)
return StartAllServices()
diff --git a/pkg/scheduler/tests/application_tracking_test.go
b/pkg/scheduler/tests/application_tracking_test.go
new file mode 100644
index 00000000..077ffd1c
--- /dev/null
+++ b/pkg/scheduler/tests/application_tracking_test.go
@@ -0,0 +1,261 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+package tests
+
+import (
+ "testing"
+ "time"
+
+ "gotest.tools/v3/assert"
+
+ "github.com/apache/yunikorn-core/pkg/common"
+ "github.com/apache/yunikorn-scheduler-interface/lib/go/si"
+)
+
+const configDataSmokeTestNoLimits = `
+partitions:
+ - name: default
+ queues:
+ - name: root
+ submitacl: "*"
+ queues:
+ - name: singleleaf
+`
+
+func TestApplicationHistoryTracking(t *testing.T) {
+ // Register RM
+ ms := &mockScheduler{}
+ defer ms.Stop()
+ err := ms.Init(configDataSmokeTestNoLimits, true, true)
+ assert.NilError(t, err, "RegisterResourceManager failed")
+
+ // Check queue events
+ client := RClient{}
+ events, err := client.GetEvents()
+ assert.NilError(t, err)
+ assert.Equal(t, 2, len(events.EventRecords), "number of events
generated")
+ verifyQueueEvents(t, events.EventRecords)
+
+ // Register a node & check events
+ err = ms.proxy.UpdateNode(&si.NodeRequest{
+ Nodes: []*si.NodeInfo{
+ {
+ NodeID: "node-1:1234",
+ Attributes: map[string]string{},
+ SchedulableResource: &si.Resource{
+ Resources: map[string]*si.Quantity{
+ "memory": {Value: 100000000},
+ "vcore": {Value: 20000},
+ },
+ },
+ Action: si.NodeInfo_CREATE,
+ },
+ },
+ RmID: "rm:123",
+ })
+ assert.NilError(t, err, "NodeRequest failed")
+ ms.mockRM.waitForAcceptedNode(t, "node-1:1234", 1000)
+ events, err = client.GetEvents()
+ assert.NilError(t, err)
+ assert.Equal(t, 4, len(events.EventRecords), "number of events
generated")
+ verifyNodeAddedEvents(t, events.EventRecords[2:])
+
+ // Add application & check events
+ err = ms.proxy.UpdateApplication(&si.ApplicationRequest{
+ New: newAddAppRequest(map[string]string{appID1:
"root.singleleaf"}),
+ RmID: "rm:123",
+ })
+ assert.NilError(t, err, "ApplicationRequest failed")
+ ms.mockRM.waitForAcceptedApplication(t, appID1, 1000)
+ events, err = client.GetEvents()
+ assert.NilError(t, err)
+ assert.Equal(t, 6, len(events.EventRecords), "number of events
generated")
+ verifyAppAddedEvents(t, events.EventRecords[4:])
+
+ // Add allocation ask & check events
+ err = ms.proxy.UpdateAllocation(&si.AllocationRequest{
+ Asks: []*si.AllocationAsk{
+ {
+ AllocationKey: "alloc-1",
+ ResourceAsk: &si.Resource{
+ Resources: map[string]*si.Quantity{
+ "memory": {Value: 10000000},
+ "vcore": {Value: 1000},
+ },
+ },
+ MaxAllocations: 1,
+ ApplicationID: appID1,
+ },
+ },
+ RmID: "rm:123",
+ })
+ assert.NilError(t, err, "AllocationRequest failed")
+ ms.mockRM.waitForAllocations(t, 1, 1000)
+ events, err = client.GetEvents()
+ assert.NilError(t, err)
+ assert.Equal(t, 11, len(events.EventRecords), "number of events
generated")
+ verifyAllocationAskAddedEvents(t, events.EventRecords[6:])
+
+ allocations := ms.mockRM.getAllocations()
+ assert.Equal(t, 1, len(allocations), "number of allocations")
+ var uuid string
+ for key := range allocations {
+ uuid = key
+ }
+
+ // terminate allocation & check events
+ err = ms.proxy.UpdateAllocation(&si.AllocationRequest{
+ Releases: &si.AllocationReleasesRequest{
+ AllocationsToRelease: []*si.AllocationRelease{
+ {
+ ApplicationID: appID1,
+ PartitionName: "default",
+ UUID: uuid,
+ TerminationType:
si.TerminationType_STOPPED_BY_RM,
+ },
+ },
+ },
+ RmID: "rm:123",
+ })
+ assert.NilError(t, err, "AllocationRequest failed")
+
+ // make sure app transitions to Completing
+ app := ms.getApplication(appID1)
+ err = common.WaitFor(time.Millisecond*10, time.Second, func() bool {
+ return app.IsCompleting()
+ })
+ assert.NilError(t, err, "timeout waiting for app state Completing")
+
+ events, err = client.GetEvents()
+ assert.NilError(t, err)
+ assert.Equal(t, 14, len(events.EventRecords), "number of events
generated")
+ verifyAllocationCancelledEvents(t, events.EventRecords[11:])
+}
+
+func verifyQueueEvents(t *testing.T, events []*si.EventRecord) {
+ assert.Equal(t, "root", events[0].ObjectID)
+ assert.Equal(t, "", events[0].Message)
+ assert.Equal(t, "", events[0].ReferenceID)
+ assert.Equal(t, si.EventRecord_ADD, events[0].EventChangeType)
+ assert.Equal(t, si.EventRecord_DETAILS_NONE,
events[0].EventChangeDetail)
+
+ assert.Equal(t, "root.singleleaf", events[1].ObjectID)
+ assert.Equal(t, "", events[1].Message)
+ assert.Equal(t, "", events[1].ReferenceID)
+ assert.Equal(t, si.EventRecord_ADD, events[1].EventChangeType)
+ assert.Equal(t, si.EventRecord_DETAILS_NONE,
events[1].EventChangeDetail)
+}
+
+func verifyNodeAddedEvents(t *testing.T, events []*si.EventRecord) {
+ assert.Equal(t, "node-1:1234", events[0].ObjectID)
+ assert.Equal(t, "schedulable: true", events[0].Message)
+ assert.Equal(t, "", events[0].ReferenceID)
+ assert.Equal(t, si.EventRecord_NODE, events[0].Type)
+ assert.Equal(t, si.EventRecord_SET, events[0].EventChangeType)
+ assert.Equal(t, si.EventRecord_NODE_SCHEDULABLE,
events[0].EventChangeDetail)
+
+ assert.Equal(t, "node-1:1234", events[1].ObjectID)
+ assert.Equal(t, "", events[1].Message)
+ assert.Equal(t, "", events[1].ReferenceID)
+ assert.Equal(t, si.EventRecord_NODE, events[1].Type)
+ assert.Equal(t, si.EventRecord_ADD, events[1].EventChangeType)
+ assert.Equal(t, si.EventRecord_DETAILS_NONE,
events[1].EventChangeDetail)
+}
+
+func verifyAppAddedEvents(t *testing.T, events []*si.EventRecord) {
+ assert.Equal(t, "app-1", events[0].ObjectID)
+ assert.Equal(t, "", events[0].Message)
+ assert.Equal(t, "", events[0].ReferenceID)
+ assert.Equal(t, si.EventRecord_APP, events[0].Type)
+ assert.Equal(t, si.EventRecord_ADD, events[0].EventChangeType)
+ assert.Equal(t, si.EventRecord_DETAILS_NONE,
events[0].EventChangeDetail)
+
+ assert.Equal(t, "root.singleleaf", events[1].ObjectID)
+ assert.Equal(t, "", events[1].Message)
+ assert.Equal(t, "app-1", events[1].ReferenceID)
+ assert.Equal(t, si.EventRecord_QUEUE, events[1].Type)
+ assert.Equal(t, si.EventRecord_ADD, events[1].EventChangeType)
+ assert.Equal(t, si.EventRecord_QUEUE_APP, events[1].EventChangeDetail)
+}
+
+func verifyAllocationAskAddedEvents(t *testing.T, events []*si.EventRecord) {
+ // state transition to Accepted
+ assert.Equal(t, "app-1", events[0].ObjectID)
+ assert.Equal(t, "", events[0].Message)
+ assert.Equal(t, "", events[0].ReferenceID)
+ assert.Equal(t, si.EventRecord_APP, events[0].Type)
+ assert.Equal(t, si.EventRecord_SET, events[0].EventChangeType)
+ assert.Equal(t, si.EventRecord_APP_ACCEPTED,
events[0].EventChangeDetail)
+
+ // allocation ask received
+ assert.Equal(t, "app-1", events[1].ObjectID)
+ assert.Equal(t, "", events[1].Message)
+ assert.Equal(t, "alloc-1", events[1].ReferenceID)
+ assert.Equal(t, si.EventRecord_APP, events[1].Type)
+ assert.Equal(t, si.EventRecord_ADD, events[1].EventChangeType)
+ assert.Equal(t, si.EventRecord_APP_REQUEST, events[1].EventChangeDetail)
+
+ // allocation on node
+ assert.Equal(t, "node-1:1234", events[2].ObjectID)
+ assert.Equal(t, "", events[2].Message)
+ assert.Equal(t, "alloc-1", events[2].ReferenceID)
+ assert.Equal(t, si.EventRecord_NODE, events[2].Type)
+ assert.Equal(t, si.EventRecord_ADD, events[2].EventChangeType)
+ assert.Equal(t, si.EventRecord_NODE_ALLOC, events[2].EventChangeDetail)
+
+ // state change to Starting
+ assert.Equal(t, "app-1", events[3].ObjectID)
+ assert.Equal(t, "", events[3].Message)
+ assert.Equal(t, "", events[3].ReferenceID)
+ assert.Equal(t, si.EventRecord_APP, events[3].Type)
+ assert.Equal(t, si.EventRecord_SET, events[3].EventChangeType)
+ assert.Equal(t, si.EventRecord_APP_STARTING,
events[3].EventChangeDetail)
+
+ // adding allocation to the App
+ assert.Equal(t, "app-1", events[4].ObjectID)
+ assert.Equal(t, "", events[4].Message)
+ assert.Equal(t, si.EventRecord_APP, events[4].Type)
+ assert.Equal(t, si.EventRecord_ADD, events[4].EventChangeType)
+ assert.Equal(t, si.EventRecord_APP_ALLOC, events[4].EventChangeDetail)
+}
+
+func verifyAllocationCancelledEvents(t *testing.T, events []*si.EventRecord) {
+ // state transition to Completing
+ assert.Equal(t, "app-1", events[0].ObjectID)
+ assert.Equal(t, "", events[0].Message)
+ assert.Equal(t, "", events[0].ReferenceID)
+ assert.Equal(t, si.EventRecord_APP, events[0].Type)
+ assert.Equal(t, si.EventRecord_SET, events[0].EventChangeType)
+ assert.Equal(t, si.EventRecord_APP_COMPLETING,
events[0].EventChangeDetail)
+
+ // cancel allocation
+ assert.Equal(t, "app-1", events[1].ObjectID)
+ assert.Equal(t, "", events[1].Message)
+ assert.Equal(t, si.EventRecord_APP, events[1].Type)
+ assert.Equal(t, si.EventRecord_REMOVE, events[1].EventChangeType)
+ assert.Equal(t, si.EventRecord_ALLOC_CANCEL,
events[1].EventChangeDetail)
+
+ // remove allocation from the node
+ assert.Equal(t, "node-1:1234", events[2].ObjectID)
+ assert.Equal(t, "", events[2].Message)
+ assert.Equal(t, "alloc-1", events[2].ReferenceID)
+ assert.Equal(t, si.EventRecord_NODE, events[2].Type)
+ assert.Equal(t, si.EventRecord_REMOVE, events[2].EventChangeType)
+ assert.Equal(t, si.EventRecord_NODE_ALLOC, events[2].EventChangeDetail)
+}
diff --git a/pkg/scheduler/tests/mockscheduler_test.go
b/pkg/scheduler/tests/mockscheduler_test.go
index 9008c83b..125308fd 100644
--- a/pkg/scheduler/tests/mockscheduler_test.go
+++ b/pkg/scheduler/tests/mockscheduler_test.go
@@ -41,19 +41,15 @@ type mockScheduler struct {
// MultiStepSchedule(int) to allocate.
// Auto scheduling does not give control over the scheduling steps and should
only
// be used in specific use case testing.
-func (m *mockScheduler) Init(config string, autoSchedule bool) error {
+func (m *mockScheduler) Init(config string, autoSchedule bool, withWebapp
bool) error {
m.rmID = "rm:123"
m.partitionName = common.GetNormalizedPartitionName("default", m.rmID)
BuildInfoMap := make(map[string]string)
BuildInfoMap["k"] = "v"
- // Start all tests
- if autoSchedule {
- m.serviceContext = entrypoint.StartAllServices()
- } else {
- m.serviceContext =
entrypoint.StartAllServicesWithManualScheduler()
- }
+ m.serviceContext = entrypoint.StartAllServicesWithParams(!autoSchedule,
withWebapp)
+
m.proxy = m.serviceContext.RMProxy
m.scheduler = m.serviceContext.Scheduler
diff --git a/pkg/scheduler/tests/operation_test.go
b/pkg/scheduler/tests/operation_test.go
index 73943966..f2be70e1 100644
--- a/pkg/scheduler/tests/operation_test.go
+++ b/pkg/scheduler/tests/operation_test.go
@@ -55,7 +55,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// Check queues of cache and scheduler.
@@ -183,7 +183,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// Check queues of cache and scheduler.
@@ -331,7 +331,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// Check queues of cache and scheduler.
@@ -447,7 +447,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// Check queues of cache and scheduler.
@@ -566,7 +566,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// Check queues of cache and scheduler.
diff --git a/pkg/scheduler/tests/plugin_test.go
b/pkg/scheduler/tests/plugin_test.go
index c736e891..5ee616c8 100644
--- a/pkg/scheduler/tests/plugin_test.go
+++ b/pkg/scheduler/tests/plugin_test.go
@@ -64,7 +64,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, true)
+ err := ms.Init(configData, true, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// register a fake container state updater for testing
diff --git a/pkg/scheduler/tests/recovery_test.go
b/pkg/scheduler/tests/recovery_test.go
index 38c1b678..81415a63 100644
--- a/pkg/scheduler/tests/recovery_test.go
+++ b/pkg/scheduler/tests/recovery_test.go
@@ -55,7 +55,7 @@ func TestSchedulerRecovery(t *testing.T) {
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// Check queues of scheduler.GetClusterContext() and scheduler.
@@ -233,7 +233,7 @@ func TestSchedulerRecovery(t *testing.T) {
mockRM := ms.mockRM
ms.serviceContext.StopAll()
// restart
- err = ms.Init(configData, false)
+ err = ms.Init(configData, false, false)
assert.NilError(t, err, "2nd RegisterResourceManager failed")
// Register nodes, and add apps
@@ -343,7 +343,7 @@ func TestSchedulerRecovery2Allocations(t *testing.T) {
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// Register node, and add app
@@ -411,7 +411,7 @@ func TestSchedulerRecovery2Allocations(t *testing.T) {
mockRM := ms.mockRM
ms.serviceContext.StopAll()
// restart
- err = ms.Init(configData, false)
+ err = ms.Init(configData, false, false)
assert.NilError(t, err, "2nd RegisterResourceManager failed")
// Register nodes, and add apps
@@ -453,7 +453,7 @@ func TestSchedulerRecoveryWithoutAppInfo(t *testing.T) {
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// Register nodes, and add apps
@@ -725,7 +725,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// initially there is only 1 root queue exist
@@ -860,7 +860,7 @@ partitions:
ms.serviceContext.StopAll()
// restart
- err = ms.Init(configData, false)
+ err = ms.Init(configData, false, false)
assert.NilError(t, err, "2nd RegisterResourceManager failed")
part = ms.scheduler.GetClusterContext().GetPartition(ms.partitionName)
rootQ = part.GetQueue("root")
diff --git a/pkg/scheduler/tests/reservation_test.go
b/pkg/scheduler/tests/reservation_test.go
index 163cf245..a81b1032 100644
--- a/pkg/scheduler/tests/reservation_test.go
+++ b/pkg/scheduler/tests/reservation_test.go
@@ -85,7 +85,7 @@ func TestBasicReservation(t *testing.T) {
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(SingleQueueConfig, false)
+ err := ms.Init(SingleQueueConfig, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// override the reservation delay, and cleanup when done
@@ -161,7 +161,7 @@ func TestReservationForTwoQueues(t *testing.T) {
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(DualQueueConfig, false)
+ err := ms.Init(DualQueueConfig, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// override the reservation delay, and cleanup when done
objects.SetReservationDelay(10 * time.Nanosecond)
@@ -265,7 +265,7 @@ func TestRemoveReservedNode(t *testing.T) {
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(SingleQueueConfig, false)
+ err := ms.Init(SingleQueueConfig, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// override the reservation delay, and cleanup when done
objects.SetReservationDelay(10 * time.Nanosecond)
@@ -316,7 +316,7 @@ func TestAddNewNode(t *testing.T) {
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(SingleQueueConfig, false)
+ err := ms.Init(SingleQueueConfig, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// override the reservation delay, and cleanup when done
@@ -374,7 +374,7 @@ func TestUnReservationAndDeletion(t *testing.T) {
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(SingleQueueConfig, false)
+ err := ms.Init(SingleQueueConfig, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// override the reservation delay, and cleanup when done
diff --git a/pkg/scheduler/tests/restclient.go
b/pkg/scheduler/tests/restclient.go
new file mode 100644
index 00000000..9ff09698
--- /dev/null
+++ b/pkg/scheduler/tests/restclient.go
@@ -0,0 +1,70 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+package tests
+
+import (
+ "encoding/json"
+ "io"
+ "net/http"
+ "net/url"
+
+ "github.com/apache/yunikorn-core/pkg/webservice/dao"
+)
+
+type RClient struct {
+ BaseURL *url.URL
+}
+
+func (c *RClient) GetEvents() (*dao.EventRecordDAO, error) {
+ req, err := c.newRequest("GET", "ws/v1/events/batch")
+ if err != nil {
+ return nil, err
+ }
+ var events *dao.EventRecordDAO
+ _, err = c.do(req, &events)
+ return events, err
+}
+
+func (c *RClient) newRequest(method, path string) (*http.Request, error) {
+ rel := &url.URL{Path: path}
+ wsUrl := &url.URL{
+ Host: "localhost:9080",
+ Scheme: "http",
+ }
+
+ u := wsUrl.ResolveReference(rel)
+ var buf io.ReadWriter
+ req, err := http.NewRequest(method, u.String(), buf)
+ if err != nil {
+ return nil, err
+ }
+ req.Header.Set("Accept", "application/json")
+ req.Header.Set("User-Agent", "Golang_Spider_Bot/3.0")
+ return req, nil
+}
+
+func (c *RClient) do(req *http.Request, v interface{}) (*http.Response, error)
{
+ resp, err := http.DefaultClient.Do(req)
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+ err = json.NewDecoder(resp.Body).Decode(v)
+ return resp, err
+}
diff --git a/pkg/scheduler/tests/smoke_test.go
b/pkg/scheduler/tests/smoke_test.go
index 57411ef1..759f364a 100644
--- a/pkg/scheduler/tests/smoke_test.go
+++ b/pkg/scheduler/tests/smoke_test.go
@@ -65,7 +65,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// memorize the checksum of current configs
@@ -162,7 +162,7 @@ func TestBasicScheduler(t *testing.T) {
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configDataSmokeTest, false)
+ err := ms.Init(configDataSmokeTest, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
leafName := "root.singleleaf"
@@ -384,7 +384,7 @@ func TestBasicSchedulerAutoAllocation(t *testing.T) {
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configDataSmokeTest, true)
+ err := ms.Init(configDataSmokeTest, true, false)
assert.NilError(t, err, "RegisterResourceManager failed")
leafName := "root.singleleaf"
@@ -491,7 +491,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
leafApp1 := "root.leaf1"
@@ -614,7 +614,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
leafName := "root.leaf"
@@ -739,7 +739,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// Register a node, and add applications
@@ -830,7 +830,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(param.configData, false)
+ err := ms.Init(param.configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed
in run %s", param.name)
// Register a node, and add applications
@@ -942,7 +942,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
node1ID := "node-1:1234"
@@ -1064,7 +1064,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
leafName := "root.leaf"
@@ -1182,7 +1182,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// Register 10 nodes, and add applications
@@ -1283,7 +1283,7 @@ func TestDupReleasesInGangScheduling(t *testing.T) {
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configDataSmokeTest, false)
+ err := ms.Init(configDataSmokeTest, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
leafName := "root.singleleaf"
@@ -1469,7 +1469,7 @@ partitions:
ms := &mockScheduler{}
defer ms.Stop()
- err := ms.Init(configData, false)
+ err := ms.Init(configData, false, false)
assert.NilError(t, err, "RegisterResourceManager failed")
// Check queues of cache and scheduler.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]