Skip to content

Commit

Permalink
detector.New() now works with param value 'master@<foo>:<bar>'. See #82.
Browse files Browse the repository at this point in the history
  • Loading branch information
vladimirvivien committed Feb 13, 2015
1 parent f7f8de9 commit 79a2648
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 13 deletions.
29 changes: 19 additions & 10 deletions detector/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,23 @@ func Register(prefix string, f PluginFactory) error {
}

func New(spec string) (m Master, err error) {
if spec == "" {

switch f, pluginFound := MatchingPlugin(spec); {
case pluginFound:
m, err = f(spec)

case spec == "":
m = NewStandalone(nil)
} else if strings.HasPrefix(spec, "file://") {

case strings.HasPrefix(spec, "master@"):
var pid *upid.UPID
if pid, err = upid.Parse(spec); err == nil {
m = NewStandalone(createMasterInfo(pid))
} else {
log.Errorf("Error while parsing %s: %s\n", spec, err)
}

case strings.HasPrefix(spec, "file://"):
var body []byte
path := spec[7:]
body, err = ioutil.ReadFile(path)
Expand All @@ -57,19 +71,14 @@ func New(spec string) (m Master, err error) {
} else {
m, err = New(string(body))
}
} else if f, ok := MatchingPlugin(spec); ok {
m, err = f(spec)
} else if strings.HasPrefix("master@", spec) {
var pid *upid.UPID
if pid, err = upid.Parse(spec); err == nil {
m = NewStandalone(createMasterInfo(pid))
}
} else {

default:
var pid *upid.UPID
if pid, err = upid.Parse("master@" + spec); err == nil {
m = NewStandalone(createMasterInfo(pid))
}
}

return
}

Expand Down
3 changes: 1 addition & 2 deletions scheduler/scheduler.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,6 @@ func NewMesosSchedulerDriver(
return nil, err
} else {
driver.masterDetector = md

// if standalone detector, apply master value immediately.
sa, ok := md.(*detector.Standalone)
if ok {
Expand Down Expand Up @@ -231,7 +230,7 @@ func (driver *MesosSchedulerDriver) masterDetected(master *mesos.MasterInfo) {
driver.setConnected(false)

if master != nil {
log.Infof("New master %s detected\n", master.String())
log.Infof("New master %s detected\n", master.GetPid())

pid, err := upid.Parse(master.GetPid())
if err != nil {
Expand Down
12 changes: 11 additions & 1 deletion scheduler/scheduler_unit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,24 @@ func TestSchedulerDriverNew(t *testing.T) {
driver, err := NewMesosSchedulerDriver(NewMockScheduler(), &mesos.FrameworkInfo{}, masterAddr, nil)
assert.NotNil(t, driver)
assert.NoError(t, err)
fmt.Println("driver.MasterPid =", driver.MasterPid.String())
assert.True(t, driver.MasterPid.Equal(mUpid))
user, _ := user.Current()
assert.Equal(t, user.Username, driver.FrameworkInfo.GetUser())
host, _ := os.Hostname()
assert.Equal(t, host, driver.FrameworkInfo.GetHostname())
}

func TestSchedulerDriverNew_WithPid(t *testing.T) {
masterAddr := "master@127.0.0.1:5050"
mUpid, err := upid.Parse(masterAddr)
assert.NoError(t, err)
driver, err := NewMesosSchedulerDriver(NewMockScheduler(), &mesos.FrameworkInfo{}, masterAddr, nil)
assert.NotNil(t, driver)
assert.NoError(t, err)
assert.True(t, driver.MasterPid.Equal(mUpid))
assert.NoError(t, err)
}

func (suite *SchedulerTestSuite) TestSchedulerDriverNew_WithFrameworkInfo_Override() {
suite.framework.Hostname = proto.String("local-host")
driver, err := NewMesosSchedulerDriver(NewMockScheduler(), suite.framework, "localhost:5050", nil)
Expand Down

0 comments on commit 79a2648

Please sign in to comment.