~rogpeppe/juju-core/041-config-agent-version

« back to all changes in this revision

Viewing changes to environs/dummy/environs.go

  • Committer: Roger Peppe
  • Date: 2012-08-30 12:25:49 UTC
  • mfrom: (443.1.7 juju-core)
  • Revision ID: roger.peppe@canonical.com-20120830122549-jmn0ledsyj1uxhd2
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
        "launchpad.net/juju-core/testing"
32
32
        "net"
33
33
        "net/http"
 
34
        "os"
34
35
        "strings"
35
36
        "sync"
 
37
        "time"
36
38
)
37
39
 
38
40
// stateInfo returns a *state.Info which allows clients to connect to the
142
144
        }()
143
145
        discardOperations = c
144
146
        Reset()
 
147
 
 
148
        // parse errors are ignored
 
149
        providerDelay, _ = time.ParseDuration(os.Getenv("JUJU_DUMMY_DELAY"))
145
150
}
146
151
 
147
152
// Reset resets the entire dummy environment and forgets any registered
331
336
}
332
337
 
333
338
func (e *environ) Bootstrap(uploadTools bool) error {
 
339
        defer delay()
334
340
        if err := e.checkBroken("Bootstrap"); err != nil {
335
341
                return err
336
342
        }
402
408
}
403
409
 
404
410
func (e *environ) Destroy([]environs.Instance) error {
 
411
        defer delay()
405
412
        if err := e.checkBroken("Destroy"); err != nil {
406
413
                return err
407
414
        }
418
425
}
419
426
 
420
427
func (e *environ) StartInstance(machineId int, info *state.Info, tools *state.Tools) (environs.Instance, error) {
 
428
        defer delay()
421
429
        log.Printf("dummy startinstance, machine %d", machineId)
422
430
        if err := e.checkBroken("StartInstance"); err != nil {
423
431
                return nil, err
445
453
}
446
454
 
447
455
func (e *environ) StopInstances(is []environs.Instance) error {
 
456
        defer delay()
448
457
        if err := e.checkBroken("StopInstance"); err != nil {
449
458
                return err
450
459
        }
461
470
}
462
471
 
463
472
func (e *environ) Instances(ids []string) (insts []environs.Instance, err error) {
 
473
        defer delay()
464
474
        if err := e.checkBroken("Instances"); err != nil {
465
475
                return nil, err
466
476
        }
485
495
}
486
496
 
487
497
func (e *environ) AllInstances() ([]environs.Instance, error) {
 
498
        defer delay()
488
499
        if err := e.checkBroken("AllInstances"); err != nil {
489
500
                return nil, err
490
501
        }
513
524
}
514
525
 
515
526
func (inst *instance) DNSName() (string, error) {
 
527
        defer delay()
516
528
        return inst.id + ".dns", nil
517
529
}
518
530
 
521
533
}
522
534
 
523
535
func (inst *instance) OpenPorts(machineId int, ports []state.Port) error {
 
536
        defer delay()
524
537
        log.Printf("openPorts %d, %#v", machineId, ports)
525
538
        if inst.machineId != machineId {
526
539
                panic(fmt.Errorf("OpenPorts with mismatched machine id, expected %d got %d", inst.machineId, machineId))
540
553
}
541
554
 
542
555
func (inst *instance) ClosePorts(machineId int, ports []state.Port) error {
 
556
        defer delay()
543
557
        if inst.machineId != machineId {
544
558
                panic(fmt.Errorf("ClosePorts with mismatched machine id, expected %d got %d", inst.machineId, machineId))
545
559
        }
558
572
}
559
573
 
560
574
func (inst *instance) Ports(machineId int) (ports []state.Port, err error) {
 
575
        defer delay()
561
576
        if inst.machineId != machineId {
562
577
                panic(fmt.Errorf("Ports with mismatched machine id, expected %d got %d", inst.machineId, machineId))
563
578
        }
569
584
        state.SortPorts(ports)
570
585
        return
571
586
}
 
587
 
 
588
// providerDelay controls the delay before dummy responds.
 
589
// non empty values in JUJU_DUMMY_DELAY will be parsed as 
 
590
// time.Durations into this value.
 
591
var providerDelay time.Duration
 
592
 
 
593
// pause execution to simulate the latency of a real provider
 
594
func delay() {
 
595
        if providerDelay > 0 {
 
596
                log.Printf("dummy: pausing for %v", providerDelay)
 
597
                <-time.After(providerDelay)
 
598
        }
 
599
}