~hopem/charm-helpers/lp1499643

« back to all changes in this revision

Viewing changes to tests/contrib/openstack/test_openstack_utils.py

  • Committer: Liam Young
  • Date: 2015-09-15 17:52:15 UTC
  • mfrom: (400.2.10 charm-helpers-object)
  • Revision ID: liam.young@canonical.com-20150915175215-hpz897bqtxeymxcf
[thedac, r=gnuoy] Object oriented workload status for openstack charms

Show diffs side-by-side

added added

removed removed

Lines of Context:
840
840
        openstack.git_src_dir(openstack_origin_git, 'keystone')
841
841
        join.assert_called_with('/mnt/openstack-git', 'keystone')
842
842
 
 
843
    def test_incomplete_relation_data(self):
 
844
        configs = MagicMock()
 
845
        configs.complete_contexts.return_value = ['pgsql-db', 'amqp']
 
846
        required_interfaces = {
 
847
            'database': ['shared-db', 'pgsql-db'],
 
848
            'message': ['amqp', 'zeromq-configuration'],
 
849
            'identity': ['identity-service']}
 
850
        expected_result = 'identity'
 
851
 
 
852
        result = openstack.incomplete_relation_data(configs, required_interfaces)
 
853
        self.assertTrue(expected_result in result.keys())
 
854
 
 
855
    @patch('charmhelpers.contrib.openstack.utils.status_set')
 
856
    def test_set_os_workload_status_complete(self, status_set):
 
857
        configs = MagicMock()
 
858
        configs.complete_contexts.return_value = ['shared-db',
 
859
                                                  'amqp',
 
860
                                                  'identity-service']
 
861
        required_interfaces = {
 
862
            'database': ['shared-db', 'pgsql-db'],
 
863
            'message': ['amqp', 'zeromq-configuration'],
 
864
            'identity': ['identity-service']}
 
865
 
 
866
        openstack.set_os_workload_status(configs, required_interfaces)
 
867
        status_set.assert_called_with('active', 'Unit is ready')
 
868
 
 
869
    @patch('charmhelpers.contrib.openstack.utils.incomplete_relation_data',
 
870
           return_value={'identity': {'identity-service': {'related': True}}})
 
871
    @patch('charmhelpers.contrib.openstack.utils.status_set')
 
872
    def test_set_os_workload_status_related_incomplete(self, status_set,
 
873
                                                       incomplete_relation_data):
 
874
        configs = MagicMock()
 
875
        configs.complete_contexts.return_value = ['shared-db', 'amqp']
 
876
        required_interfaces = {
 
877
            'database': ['shared-db', 'pgsql-db'],
 
878
            'message': ['amqp', 'zeromq-configuration'],
 
879
            'identity': ['identity-service']}
 
880
 
 
881
        openstack.set_os_workload_status(configs, required_interfaces)
 
882
        status_set.assert_called_with('waiting',
 
883
                                      "Incomplete relations: identity")
 
884
 
 
885
    @patch('charmhelpers.contrib.openstack.utils.incomplete_relation_data',
 
886
           return_value={'identity': {'identity-service': {'related': False}}})
 
887
    @patch('charmhelpers.contrib.openstack.utils.status_set')
 
888
    def test_set_os_workload_status_absent(self, status_set,
 
889
                                           incomplete_relation_data):
 
890
        configs = MagicMock()
 
891
        configs.complete_contexts.return_value = ['shared-db', 'amqp']
 
892
        required_interfaces = {
 
893
            'database': ['shared-db', 'pgsql-db'],
 
894
            'message': ['amqp', 'zeromq-configuration'],
 
895
            'identity': ['identity-service']}
 
896
 
 
897
        openstack.set_os_workload_status(configs, required_interfaces)
 
898
        status_set.assert_called_with('blocked',
 
899
                                      'Missing relations: identity')
 
900
 
 
901
    @patch('charmhelpers.contrib.openstack.utils.hook_name',
 
902
           return_value='identity-service-relation-broken')
 
903
    @patch('charmhelpers.contrib.openstack.utils.incomplete_relation_data',
 
904
           return_value={'identity': {'identity-service': {'related': True}}})
 
905
    @patch('charmhelpers.contrib.openstack.utils.status_set')
 
906
    def test_set_os_workload_status_related_broken(self, status_set,
 
907
                                                   incomplete_relation_data,
 
908
                                                   hook_name):
 
909
        configs = MagicMock()
 
910
        configs.complete_contexts.return_value = ['shared-db', 'amqp']
 
911
        required_interfaces = {
 
912
            'database': ['shared-db', 'pgsql-db'],
 
913
            'message': ['amqp', 'zeromq-configuration'],
 
914
            'identity': ['identity-service']}
 
915
 
 
916
        openstack.set_os_workload_status(configs, required_interfaces)
 
917
        status_set.assert_called_with('blocked',
 
918
                                      "Missing relations: identity")
 
919
 
 
920
    @patch('charmhelpers.contrib.openstack.utils.incomplete_relation_data',
 
921
           return_value={'identity':
 
922
                         {'identity-service': {'related': True}},
 
923
 
 
924
                         'message':
 
925
                         {'amqp': {'missing_data': ['rabbitmq-password'],
 
926
                                   'related': True}},
 
927
 
 
928
                         'database':
 
929
                         {'shared-db': {'related': False}}
 
930
                         })
 
931
    @patch('charmhelpers.contrib.openstack.utils.status_set')
 
932
    def test_set_os_workload_status_mixed(self, status_set, incomplete_relation_data):
 
933
        configs = MagicMock()
 
934
        configs.complete_contexts.return_value = ['shared-db', 'amqp']
 
935
        required_interfaces = {
 
936
            'database': ['shared-db', 'pgsql-db'],
 
937
            'message': ['amqp', 'zeromq-configuration'],
 
938
            'identity': ['identity-service']}
 
939
 
 
940
        openstack.set_os_workload_status(configs, required_interfaces)
 
941
        status_set.assert_called_with('blocked',
 
942
                                      "Missing relations: database; "
 
943
                                      "incomplete relations: message, "
 
944
                                      "identity")
 
945
 
843
946
if __name__ == '__main__':
844
947
    unittest.main()