Example #1
0
    def test_train_antinex_simple_success_retrain(self):

        exchange = "webapp.train.requests"
        routing_key = "webapp.train.requests"
        queue = "webapp.train.requests"
        max_models = 1
        prc = AntiNexProcessor(max_models=max_models)

        body = self.build_train_antinex_request()
        self.assertEqual(body["ml_type"], "classification")

        message = MockMessage(exchange=exchange,
                              routing_key=routing_key,
                              queue=queue)
        self.assertEqual(message.state, "NOTRUN")
        self.assertEqual(message.get_exchange(), exchange)
        self.assertEqual(message.get_routing_key(), routing_key)
        self.assertEqual(message.get_queue(), queue)

        self.assertEqual(len(prc.models), 0)
        prc.handle_messages(body=body, message=message)
        self.assertEqual(message.state, "ACK")
        self.assertEqual(len(prc.models), max_models)

        self.assertEqual(len(prc.models), 1)
        prc.handle_messages(body=body, message=message)
        self.assertEqual(message.state, "ACK")
        self.assertEqual(len(prc.models), max_models)
Example #2
0
    def test_train_antinex_simple_model_cleanup(self):

        exchange = "webapp.train.requests"
        routing_key = "webapp.train.requests"
        queue = "webapp.train.requests"
        max_models = 1
        prc = AntiNexProcessor(max_models=max_models)

        body = self.build_train_antinex_request()
        self.assertEqual(body["ml_type"], "classification")

        message = MockMessage(exchange=exchange,
                              routing_key=routing_key,
                              queue=queue)
        self.assertEqual(message.state, "NOTRUN")
        self.assertEqual(message.get_exchange(), exchange)
        self.assertEqual(message.get_routing_key(), routing_key)
        self.assertEqual(message.get_queue(), queue)

        self.assertEqual(len(prc.models), 0)
        prc.handle_messages(body=body, message=message)
        self.assertEqual(message.state, "ACK")
        self.assertEqual(len(prc.models), max_models)

        # now try to train a new one and test the cleanup
        body["label"] = "should-remove-the-first"
        self.assertEqual(len(prc.models), 1)
        prc.handle_messages(body=body, message=message)
        self.assertEqual(message.state, "ACK")
        self.assertEqual(len(prc.models), max_models)
        for midx, model_name in enumerate(prc.models):
            self.assertEqual(model_name, body["label"])
Example #3
0
    def test_scaler_first_time_predict_with_rows(self):

        exchange = "webapp.predict.requests"
        routing_key = "webapp.predict.requests"
        queue = "webapp.predict.requests"
        max_models = 1
        prc = AntiNexProcessor(
            max_models=max_models)

        num_rows_at_bottom = 7
        predict_rows_body = self.build_predict_rows_from_dataset(
            num_rows_at_bottom=num_rows_at_bottom)
        name_of_model = predict_rows_body["label"].lower().strip()

        # make sure to remove the dataset arg to trigger
        # the predict from just the list of dictionary rows
        predict_rows_body.pop(
            "dataset",
            None)

        self.assertEqual(
            predict_rows_body["ml_type"],
            "classification")

        message = MockMessage(
            exchange=exchange,
            routing_key=routing_key,
            queue=queue)
        self.assertEqual(
            message.state,
            "NOTRUN")
        self.assertEqual(
            message.get_exchange(),
            exchange)
        self.assertEqual(
            message.get_routing_key(),
            routing_key)
        self.assertEqual(
            message.get_queue(),
            queue)

        self.assertEqual(
            len(prc.models),
            0)
        prc.handle_messages(
            body=predict_rows_body,
            message=message)
        self.assertEqual(
            message.state,
            "ACK")
        self.assertEqual(
            len(prc.models),
            max_models)
        model_data = prc.models[name_of_model]
        print(len(model_data["data"]["sample_predictions"]))
        self.assertTrue(
            (len(model_data["data"]["sample_predictions"])
             == num_rows_at_bottom))

        num_rows_at_bottom = 4
        predict_rows_body = self.build_predict_rows_from_dataset(
            num_rows_at_bottom=num_rows_at_bottom)

        # make sure to remove the dataset arg to trigger
        # the predict from just the list of dictionary rows
        predict_rows_body.pop(
            "dataset",
            None)
        self.assertEqual(
            len(prc.models),
            1)
        prc.handle_messages(
            body=predict_rows_body,
            message=message)
        self.assertEqual(
            message.state,
            "ACK")
        self.assertEqual(
            len(prc.models),
            max_models)

        self.assertTrue(
            name_of_model in prc.models)
        model_data = prc.models[name_of_model]
        self.assertTrue(
            (len(model_data["data"]["sample_predictions"])
             == num_rows_at_bottom))