Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(710)

Delta Between Two Patch Sets: state/machine_test.go

Issue 13430044: state: added status data to status doc
Left Patch Set: Created 11 years, 6 months ago
Right Patch Set: state: added status data to status doc Created 11 years, 6 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Right: Side by side diff | Download
« no previous file with change/comment | « state/machine.go ('k') | state/megawatcher.go » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
(no file at all)
1 // Copyright 2012, 2013 Canonical Ltd. 1 // Copyright 2012, 2013 Canonical Ltd.
2 // Licensed under the AGPLv3, see LICENCE file for details. 2 // Licensed under the AGPLv3, see LICENCE file for details.
3 3
4 package state_test 4 package state_test
5 5
6 import ( 6 import (
7 "sort" 7 "sort"
8 8
9 gc "launchpad.net/gocheck" 9 gc "launchpad.net/gocheck"
10 10
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 656
657 // Assign that unit (to a separate machine instance); change detected. 657 // Assign that unit (to a separate machine instance); change detected.
658 machine, err := s.State.Machine(s.machine.Id()) 658 machine, err := s.State.Machine(s.machine.Id())
659 c.Assert(err, gc.IsNil) 659 c.Assert(err, gc.IsNil)
660 err = mysql0.AssignToMachine(machine) 660 err = mysql0.AssignToMachine(machine)
661 c.Assert(err, gc.IsNil) 661 c.Assert(err, gc.IsNil)
662 wc.AssertChange("mysql/0") 662 wc.AssertChange("mysql/0")
663 wc.AssertNoChange() 663 wc.AssertNoChange()
664 664
665 // Change the unit; no change. 665 // Change the unit; no change.
666 » err = mysql0.SetStatus(params.StatusStarted, "") 666 » err = mysql0.SetStatus(params.StatusStarted, "", nil)
667 c.Assert(err, gc.IsNil) 667 c.Assert(err, gc.IsNil)
668 wc.AssertNoChange() 668 wc.AssertNoChange()
669 669
670 // Assign another unit and make the first Dying; check both changes dete cted. 670 // Assign another unit and make the first Dying; check both changes dete cted.
671 mysql1, err := mysql.AddUnit() 671 mysql1, err := mysql.AddUnit()
672 c.Assert(err, gc.IsNil) 672 c.Assert(err, gc.IsNil)
673 err = mysql1.AssignToMachine(machine) 673 err = mysql1.AssignToMachine(machine)
674 c.Assert(err, gc.IsNil) 674 c.Assert(err, gc.IsNil)
675 err = mysql0.Destroy() 675 err = mysql0.Destroy()
676 c.Assert(err, gc.IsNil) 676 c.Assert(err, gc.IsNil)
677 wc.AssertChange("mysql/0", "mysql/1") 677 wc.AssertChange("mysql/0", "mysql/1")
678 wc.AssertNoChange() 678 wc.AssertNoChange()
679 679
680 // Add a subordinate to the Alive unit; no change. 680 // Add a subordinate to the Alive unit; no change.
681 logging, err := s.State.AddService("logging", s.AddTestingCharm(c, "logg ing")) 681 logging, err := s.State.AddService("logging", s.AddTestingCharm(c, "logg ing"))
682 c.Assert(err, gc.IsNil) 682 c.Assert(err, gc.IsNil)
683 eps, err := s.State.InferEndpoints([]string{"mysql", "logging"}) 683 eps, err := s.State.InferEndpoints([]string{"mysql", "logging"})
684 c.Assert(err, gc.IsNil) 684 c.Assert(err, gc.IsNil)
685 rel, err := s.State.AddRelation(eps...) 685 rel, err := s.State.AddRelation(eps...)
686 c.Assert(err, gc.IsNil) 686 c.Assert(err, gc.IsNil)
687 mysqlru1, err := rel.Unit(mysql1) 687 mysqlru1, err := rel.Unit(mysql1)
688 c.Assert(err, gc.IsNil) 688 c.Assert(err, gc.IsNil)
689 err = mysqlru1.EnterScope(nil) 689 err = mysqlru1.EnterScope(nil)
690 c.Assert(err, gc.IsNil) 690 c.Assert(err, gc.IsNil)
691 logging0, err := logging.Unit("logging/0") 691 logging0, err := logging.Unit("logging/0")
692 c.Assert(err, gc.IsNil) 692 c.Assert(err, gc.IsNil)
693 wc.AssertNoChange() 693 wc.AssertNoChange()
694 694
695 // Change the subordinate; no change. 695 // Change the subordinate; no change.
696 » err = logging0.SetStatus(params.StatusStarted, "") 696 » err = logging0.SetStatus(params.StatusStarted, "", nil)
697 c.Assert(err, gc.IsNil) 697 c.Assert(err, gc.IsNil)
698 wc.AssertNoChange() 698 wc.AssertNoChange()
699 699
700 // Make the Dying unit Dead; change detected. 700 // Make the Dying unit Dead; change detected.
701 err = mysql0.EnsureDead() 701 err = mysql0.EnsureDead()
702 c.Assert(err, gc.IsNil) 702 c.Assert(err, gc.IsNil)
703 wc.AssertChange("mysql/0") 703 wc.AssertChange("mysql/0")
704 wc.AssertNoChange() 704 wc.AssertNoChange()
705 705
706 // Stop watcher; check Changes chan closed. 706 // Stop watcher; check Changes chan closed.
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 mysql0, err := mysql.AddUnit() 762 mysql0, err := mysql.AddUnit()
763 c.Assert(err, gc.IsNil) 763 c.Assert(err, gc.IsNil)
764 machine, err := s.State.Machine(s.machine.Id()) 764 machine, err := s.State.Machine(s.machine.Id())
765 c.Assert(err, gc.IsNil) 765 c.Assert(err, gc.IsNil)
766 err = mysql0.AssignToMachine(machine) 766 err = mysql0.AssignToMachine(machine)
767 c.Assert(err, gc.IsNil) 767 c.Assert(err, gc.IsNil)
768 wc.AssertChange("mysql/0") 768 wc.AssertChange("mysql/0")
769 wc.AssertNoChange() 769 wc.AssertNoChange()
770 770
771 // Change the unit; no change. 771 // Change the unit; no change.
772 » err = mysql0.SetStatus(params.StatusStarted, "") 772 » err = mysql0.SetStatus(params.StatusStarted, "", nil)
773 c.Assert(err, gc.IsNil) 773 c.Assert(err, gc.IsNil)
774 wc.AssertNoChange() 774 wc.AssertNoChange()
775 775
776 // Assign another unit and make the first Dying; check both changes dete cted. 776 // Assign another unit and make the first Dying; check both changes dete cted.
777 mysql1, err := mysql.AddUnit() 777 mysql1, err := mysql.AddUnit()
778 c.Assert(err, gc.IsNil) 778 c.Assert(err, gc.IsNil)
779 err = mysql1.AssignToMachine(machine) 779 err = mysql1.AssignToMachine(machine)
780 c.Assert(err, gc.IsNil) 780 c.Assert(err, gc.IsNil)
781 err = mysql0.Destroy() 781 err = mysql0.Destroy()
782 c.Assert(err, gc.IsNil) 782 c.Assert(err, gc.IsNil)
(...skipping 10 matching lines...) Expand all
793 mysqlru1, err := rel.Unit(mysql1) 793 mysqlru1, err := rel.Unit(mysql1)
794 c.Assert(err, gc.IsNil) 794 c.Assert(err, gc.IsNil)
795 err = mysqlru1.EnterScope(nil) 795 err = mysqlru1.EnterScope(nil)
796 c.Assert(err, gc.IsNil) 796 c.Assert(err, gc.IsNil)
797 logging0, err := logging.Unit("logging/0") 797 logging0, err := logging.Unit("logging/0")
798 c.Assert(err, gc.IsNil) 798 c.Assert(err, gc.IsNil)
799 wc.AssertChange("logging/0") 799 wc.AssertChange("logging/0")
800 wc.AssertNoChange() 800 wc.AssertNoChange()
801 801
802 // Change the subordinate; no change. 802 // Change the subordinate; no change.
803 » err = logging0.SetStatus(params.StatusStarted, "") 803 » err = logging0.SetStatus(params.StatusStarted, "", nil)
804 c.Assert(err, gc.IsNil) 804 c.Assert(err, gc.IsNil)
805 wc.AssertNoChange() 805 wc.AssertNoChange()
806 806
807 // Make the Dying unit Dead; change detected. 807 // Make the Dying unit Dead; change detected.
808 err = mysql0.EnsureDead() 808 err = mysql0.EnsureDead()
809 c.Assert(err, gc.IsNil) 809 c.Assert(err, gc.IsNil)
810 wc.AssertChange("mysql/0") 810 wc.AssertChange("mysql/0")
811 wc.AssertNoChange() 811 wc.AssertNoChange()
812 812
813 // Stop watcher; check Changes chan closed. 813 // Stop watcher; check Changes chan closed.
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 934
935 err := s.machine.Remove() 935 err := s.machine.Remove()
936 c.Assert(err, gc.IsNil) 936 c.Assert(err, gc.IsNil)
937 err = s.machine.SetConstraints(cons) 937 err = s.machine.SetConstraints(cons)
938 c.Assert(err, gc.ErrorMatches, cannotSet) 938 c.Assert(err, gc.ErrorMatches, cannotSet)
939 _, err = s.machine.Constraints() 939 _, err = s.machine.Constraints()
940 c.Assert(err, gc.ErrorMatches, `constraints not found`) 940 c.Assert(err, gc.ErrorMatches, `constraints not found`)
941 } 941 }
942 942
943 func (s *MachineSuite) TestGetSetStatusWhileAlive(c *gc.C) { 943 func (s *MachineSuite) TestGetSetStatusWhileAlive(c *gc.C) {
944 » err := s.machine.SetStatus(params.StatusError, "") 944 » err := s.machine.SetStatus(params.StatusError, "", nil)
945 c.Assert(err, gc.ErrorMatches, `cannot set status "error" without info`) 945 c.Assert(err, gc.ErrorMatches, `cannot set status "error" without info`)
946 » err = s.machine.SetStatus(params.StatusPending, "") 946 » err = s.machine.SetStatus(params.StatusPending, "", nil)
947 c.Assert(err, gc.ErrorMatches, `cannot set status "pending"`) 947 c.Assert(err, gc.ErrorMatches, `cannot set status "pending"`)
948 » err = s.machine.SetStatus(params.StatusDown, "") 948 » err = s.machine.SetStatus(params.StatusDown, "", nil)
949 c.Assert(err, gc.ErrorMatches, `cannot set status "down"`) 949 c.Assert(err, gc.ErrorMatches, `cannot set status "down"`)
950 » err = s.machine.SetStatus(params.Status("vliegkat"), "orville") 950 » err = s.machine.SetStatus(params.Status("vliegkat"), "orville", nil)
951 c.Assert(err, gc.ErrorMatches, `cannot set invalid status "vliegkat"`) 951 c.Assert(err, gc.ErrorMatches, `cannot set invalid status "vliegkat"`)
952 952
953 status, info, err := s.machine.Status() 953 status, info, err := s.machine.Status()
954 c.Assert(err, gc.IsNil) 954 c.Assert(err, gc.IsNil)
955 c.Assert(status, gc.Equals, params.StatusPending) 955 c.Assert(status, gc.Equals, params.StatusPending)
956 c.Assert(info, gc.Equals, "") 956 c.Assert(info, gc.Equals, "")
957 957
958 » err = s.machine.SetStatus(params.StatusStarted, "") 958 » err = s.machine.SetStatus(params.StatusStarted, "", nil)
959 c.Assert(err, gc.IsNil) 959 c.Assert(err, gc.IsNil)
960 status, info, err = s.machine.Status() 960 status, info, err = s.machine.Status()
961 c.Assert(err, gc.IsNil) 961 c.Assert(err, gc.IsNil)
962 c.Assert(status, gc.Equals, params.StatusStarted) 962 c.Assert(status, gc.Equals, params.StatusStarted)
963 c.Assert(info, gc.Equals, "") 963 c.Assert(info, gc.Equals, "")
964 964
965 » err = s.machine.SetStatus(params.StatusError, "provisioning failed") 965 » err = s.machine.SetStatus(params.StatusError, "provisioning failed", nil )
966 c.Assert(err, gc.IsNil) 966 c.Assert(err, gc.IsNil)
967 status, info, err = s.machine.Status() 967 status, info, err = s.machine.Status()
968 c.Assert(err, gc.IsNil) 968 c.Assert(err, gc.IsNil)
969 c.Assert(status, gc.Equals, params.StatusError) 969 c.Assert(status, gc.Equals, params.StatusError)
970 c.Assert(info, gc.Equals, "provisioning failed") 970 c.Assert(info, gc.Equals, "provisioning failed")
971 } 971 }
972 972
973 func (s *MachineSuite) TestGetSetStatusWhileNotAlive(c *gc.C) { 973 func (s *MachineSuite) TestGetSetStatusWhileNotAlive(c *gc.C) {
974 // When Dying set/get should work. 974 // When Dying set/get should work.
975 err := s.machine.Destroy() 975 err := s.machine.Destroy()
976 c.Assert(err, gc.IsNil) 976 c.Assert(err, gc.IsNil)
977 » err = s.machine.SetStatus(params.StatusStopped, "") 977 » err = s.machine.SetStatus(params.StatusStopped, "", nil)
978 c.Assert(err, gc.IsNil) 978 c.Assert(err, gc.IsNil)
979 status, info, err := s.machine.Status() 979 status, info, err := s.machine.Status()
980 c.Assert(err, gc.IsNil) 980 c.Assert(err, gc.IsNil)
981 c.Assert(status, gc.Equals, params.StatusStopped) 981 c.Assert(status, gc.Equals, params.StatusStopped)
982 c.Assert(info, gc.Equals, "") 982 c.Assert(info, gc.Equals, "")
983 983
984 // When Dead set should fail, but get will work. 984 // When Dead set should fail, but get will work.
985 err = s.machine.EnsureDead() 985 err = s.machine.EnsureDead()
986 c.Assert(err, gc.IsNil) 986 c.Assert(err, gc.IsNil)
987 » err = s.machine.SetStatus(params.StatusStarted, "not really") 987 » err = s.machine.SetStatus(params.StatusStarted, "not really", nil)
988 c.Assert(err, gc.ErrorMatches, `cannot set status of machine "0": not fo und or not alive`) 988 c.Assert(err, gc.ErrorMatches, `cannot set status of machine "0": not fo und or not alive`)
989 status, info, err = s.machine.Status() 989 status, info, err = s.machine.Status()
990 c.Assert(err, gc.IsNil) 990 c.Assert(err, gc.IsNil)
991 c.Assert(status, gc.Equals, params.StatusStopped) 991 c.Assert(status, gc.Equals, params.StatusStopped)
992 c.Assert(info, gc.Equals, "") 992 c.Assert(info, gc.Equals, "")
993 993
994 err = s.machine.Remove() 994 err = s.machine.Remove()
995 c.Assert(err, gc.IsNil) 995 c.Assert(err, gc.IsNil)
996 » err = s.machine.SetStatus(params.StatusStarted, "not really") 996 » err = s.machine.SetStatus(params.StatusStarted, "not really", nil)
997 c.Assert(err, gc.ErrorMatches, `cannot set status of machine "0": not fo und or not alive`) 997 c.Assert(err, gc.ErrorMatches, `cannot set status of machine "0": not fo und or not alive`)
998 _, _, err = s.machine.Status() 998 _, _, err = s.machine.Status()
999 c.Assert(err, gc.ErrorMatches, "status not found") 999 c.Assert(err, gc.ErrorMatches, "status not found")
1000 } 1000 }
1001 1001
1002 func (s *MachineSuite) TestGetSetStatusDataStandard(c *gc.C) {
1003 err := s.machine.SetStatus(params.StatusStarted, "", nil)
1004 c.Assert(err, gc.IsNil)
1005 _, _, err = s.machine.Status()
1006 c.Assert(err, gc.IsNil)
1007
1008 // Regular status setting with data.
1009 err = s.machine.SetStatus(params.StatusError, "provisioning failed", par ams.StatusData{
1010 "reason": "unknown",
1011 "retries": 5,
1012 })
1013 c.Assert(err, gc.IsNil)
1014 status, info, err := s.machine.Status()
1015 c.Assert(err, gc.IsNil)
1016 c.Assert(status, gc.Equals, params.StatusError)
1017 c.Assert(info, gc.Equals, "provisioning failed")
1018
1019 data, err := state.MachineStatusData(s.machine)
1020 c.Assert(err, gc.IsNil)
1021 c.Assert(data["reason"], gc.Equals, "unknown")
1022 c.Assert(data["retries"], gc.Equals, 5)
1023 }
1024
1025 func (s *MachineSuite) TestGetSetStatusDataMongo(c *gc.C) {
1026 err := s.machine.SetStatus(params.StatusStarted, "", nil)
1027 c.Assert(err, gc.IsNil)
1028 _, _, err = s.machine.Status()
1029 c.Assert(err, gc.IsNil)
1030
1031 // Status setting with MongoDB special values.
1032 err = s.machine.SetStatus(params.StatusError, "mongo", params.StatusData {
1033 `{name: "Joe"}`: "$where",
1034 "eval": `eval(function(foo) { return foo; }, "bar")`,
1035 "mapReduce": "mapReduce",
1036 "group": "group",
1037 })
1038 c.Assert(err, gc.IsNil)
1039 status, info, err := s.machine.Status()
1040 c.Assert(err, gc.IsNil)
1041 c.Assert(status, gc.Equals, params.StatusError)
1042 c.Assert(info, gc.Equals, "mongo")
1043
1044 data, err := state.MachineStatusData(s.machine)
1045 c.Assert(err, gc.IsNil)
1046 c.Assert(data[`{name: "Joe"}`], gc.Equals, "$where")
1047 c.Assert(data["eval"], gc.Equals, `eval(function(foo) { return foo; }, " bar")`)
1048 c.Assert(data["mapReduce"], gc.Equals, "mapReduce")
1049 c.Assert(data["group"], gc.Equals, "group")
1050 }
1051
1002 func (s *MachineSuite) TestSetAddresses(c *gc.C) { 1052 func (s *MachineSuite) TestSetAddresses(c *gc.C) {
1003 machine, err := s.State.AddMachine("series", state.JobHostUnits) 1053 machine, err := s.State.AddMachine("series", state.JobHostUnits)
1004 c.Assert(err, gc.IsNil) 1054 c.Assert(err, gc.IsNil)
1005 c.Assert(machine.Addresses(), gc.HasLen, 0) 1055 c.Assert(machine.Addresses(), gc.HasLen, 0)
1006 1056
1007 addresses := []instance.Address{ 1057 addresses := []instance.Address{
1008 instance.NewAddress("127.0.0.1"), 1058 instance.NewAddress("127.0.0.1"),
1009 instance.NewAddress("8.8.8.8"), 1059 instance.NewAddress("8.8.8.8"),
1010 } 1060 }
1011 err = machine.SetAddresses(addresses) 1061 err = machine.SetAddresses(addresses)
1012 c.Assert(err, gc.IsNil) 1062 c.Assert(err, gc.IsNil)
1013 err = machine.Refresh() 1063 err = machine.Refresh()
1014 c.Assert(err, gc.IsNil) 1064 c.Assert(err, gc.IsNil)
1015 c.Assert(machine.Addresses(), gc.DeepEquals, addresses) 1065 c.Assert(machine.Addresses(), gc.DeepEquals, addresses)
1016 } 1066 }
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b