Ejemplo n.º 1
0
    def test_execute_for_file_with_non_instantiable_config(self):
        fetcher_metrics = ConfigurationFetcherMetrics()
        manager_metrics = ConfigurationManagerMetrics()

        fetcher = FilesystemConfigurationFetcher(self.resource_dir + "/configurations", True, fetcher_metrics)

        mapper = ConfigurationMapper("configs", ObjectValueDecoderFactory(), False, manager_metrics)
        manager = ConfigurationManager()

        reader = ConfigurationReader("first-app", ["/configs-non-instantiable.json", "/configs.json"],
                                     fetcher, mapper, manager, manager_metrics, 2)

        try:
            reader.execute()
        except InstantiationException:
            self.assertEqual(0, manager_metrics.non_instantiable_skips)

        else:
            self.fail('Expected InstantiationException did not get thrown.')

        xj_config: XJConfig = manager.get_object("configs.XJConfig", self.qa_context, None)

        self.assertEqual(None, xj_config)
        self.assertEqual(0, manager_metrics.updates)
        self.assertEqual(0, fetcher_metrics.missing_files)
        self.assertEqual(0, fetcher_metrics.failures)
Ejemplo n.º 2
0
    def test_loader(self):
        fetcher_metrics = ConfigurationFetcherMetrics()
        fetcher = FilesystemConfigurationFetcher(
            self.resource_dir + "/configurations", False, fetcher_metrics)

        feature_metrics = ConfigurationManagerMetrics()
        feature_mapper = ConfigurationMapper("feature-flags",
                                             SingleValueDecoderFactory(),
                                             False, feature_metrics)

        feature_configuration_manager = ConfigurationManager()
        feature_manager = FeatureFlagManager(feature_configuration_manager)
        feature_reader = ConfigurationReader("first-app",
                                             ["/featureflags.json"], fetcher,
                                             feature_mapper,
                                             feature_configuration_manager,
                                             feature_metrics, 2)

        config_metrics = ConfigurationManagerMetrics()
        config_mapper = ConfigurationMapper("configs",
                                            ObjectValueDecoderFactory(), False,
                                            config_metrics)

        config_configuration_manager = ConfigurationManager()
        config_manager = ConfigManager(config_configuration_manager)
        config_reader = ConfigurationReader("first-app", ["/configs.json"],
                                            fetcher, config_mapper,
                                            config_configuration_manager,
                                            config_metrics, 2)

        loader_metrics = ConfigurationLoaderMetrics()
        configuration_loader = ConfigurationLoader(
            [feature_reader, config_reader], BackgroundScheduler(), 3,
            loader_metrics)

        configuration_loader.start()

        self.assertEqual(
            True,
            feature_manager.is_active("enable-feature-all", self.empty_context,
                                      False))
        self.assertEqual(
            False,
            feature_manager.is_active("enable-feature-none",
                                      self.empty_context, True))

        xj_config: XJConfig = config_manager.get_config(
            XJConfig, self.qa_context)

        self.assertEqual(["xj2001"], xj_config.hosts)

        self.assertEqual(2, loader_metrics.configuration_requests)
        self.assertEqual(0, loader_metrics.configuration_failures)
        self.assertEqual(2, fetcher_metrics.requests)
        self.assertEqual(0, fetcher_metrics.missing_files)
        self.assertEqual(0, fetcher_metrics.failures)

        configuration_loader.shutdown()
Ejemplo n.º 3
0
    def test_execute_for_skipping_missing_file(self):
        fetcher_metrics = ConfigurationFetcherMetrics()
        manager_metrics = ConfigurationManagerMetrics()

        fetcher = FilesystemConfigurationFetcher(self.resource_dir + "/configurations", True, fetcher_metrics)

        mapper = ConfigurationMapper("feature-flags", SingleValueDecoderFactory(), False, manager_metrics)
        manager = ConfigurationManager()

        reader = ConfigurationReader("first-app", ["/unknown-featureflags-file.json", "/featureflags.json"],
                                     fetcher, mapper, manager, manager_metrics, 2)

        reader.execute()

        self.assertEqual(True, manager.get_object("enable-feature-all", self.empty_context, False))
        self.assertEqual(False, manager.get_object("enable-feature-none", self.empty_context,  True))
        self.assertEqual(1, fetcher_metrics.missing_files)
        self.assertEqual(0, fetcher_metrics.failures)
Ejemplo n.º 4
0
    def test_execute_for_instantiable_config(self):
        fetcher_metrics = ConfigurationFetcherMetrics()
        manager_metrics = ConfigurationManagerMetrics()

        fetcher = FilesystemConfigurationFetcher(self.resource_dir + "/configurations", True, fetcher_metrics)

        mapper = ConfigurationMapper("configs", ObjectValueDecoderFactory(), False, manager_metrics)
        manager = ConfigurationManager()

        reader = ConfigurationReader("first-app", ["/configs.json"],
                                     fetcher, mapper, manager, manager_metrics, 2)

        reader.execute()

        xj_config: XJConfig = manager.get_object("configs.XJConfig", self.qa_context, None)

        self.assertEqual(["xj2001"], xj_config.hosts)
        self.assertEqual(1, manager_metrics.updates)
        self.assertEqual(0, fetcher_metrics.missing_files)
        self.assertEqual(0, fetcher_metrics.failures)
Ejemplo n.º 5
0
    def test_execute_for_file_with_bad_json(self):
        fetcher_metrics = ConfigurationFetcherMetrics()
        manager_metrics = ConfigurationManagerMetrics()

        fetcher = FilesystemConfigurationFetcher(self.resource_dir + "/configurations", True, fetcher_metrics)

        mapper = ConfigurationMapper("feature-flags", SingleValueDecoderFactory(), False, manager_metrics)
        manager = ConfigurationManager()

        reader = ConfigurationReader("first-app", ["/featureflags-bad-json.json", "/featureflags.json"],
                                     fetcher, mapper, manager, manager_metrics, 2)

        try:
            reader.execute()
        except IOError:
            self.assertEqual(1, manager_metrics.content_failures)

        else:
            self.fail('Expected FileNotFoundError did not get thrown.')

        self.assertEqual(False,manager.get_object("enable-feature-all", self.empty_context, False))
        self.assertEqual(True, manager.get_object("enable-feature-none", self.empty_context, True))
        self.assertEqual(0, fetcher_metrics.missing_files)
        self.assertEqual(0, fetcher_metrics.failures)