Example #1
0
def test_snd_scenario():

    setup_logging()

    scenario = SndScenario()

    scenario.run(duration=pd.Timedelta("1h30m"),
                 delete_existing_logs=True,
                 log_output_folder=params["output_folder"])
    logs = load_all_logs(params["output_folder"])

    for logid, lg in logs.items():
        log_dataframe_sample(" - some {}".format(logid), lg)

    purchases = logs["purchases"]
    log_dataframe_sample(" - some failed purchases: ",
                         purchases[purchases["FAILED_SALE"]])

    sales_of_broke = purchases[purchases["DEALER"] == "broke_dealer"]
    log_dataframe_sample(" - some purchases from broke dealer: ",
                         sales_of_broke)

    all_logs_size = np.sum(df.shape[0] for df in logs.values())
    logging.info("\ntotal number of logs: {}".format(all_logs_size))

    for logid, lg in logs.items():
        logging.info(" {} {} logs".format(len(lg), logid))

    # broke dealer should have maximum 3 successful sales
    ok_sales_of_broke = sales_of_broke[~sales_of_broke["FAILED_SALE"]]
    assert ok_sales_of_broke.shape[0] <= 3
Example #2
0
def run_cdr_scenario(params):
    setup_logging()
    logging.info("test_cdr_scenario")

    # building the circus
    start_time = pd.Timestamp(datetime.now())

    scenario = CdrScenario(params)
    built_time = pd.Timestamp(datetime.now())

    # running it
    scenario.run(duration=pd.Timedelta(params["simulation_duration"]),
                 delete_existing_logs=True,
                 log_output_folder=params["output_folder"])
    logs = load_all_logs(params["output_folder"])

    execution_time = pd.Timestamp(datetime.now())

    for logid, lg in logs.items():
        logging.info(" - some {}:\n{}\n\n".format(logid,
                                                  lg.head(15).to_string()))

    logging.info("MSISDNs having highest amount of calls: ")
    voice_cdr = logs["voice_cdr"]
    top_users = voice_cdr["MSISDN_A"].value_counts().head(10)
    logging.info(top_users)

    logging.info("some dropped calls: ")
    dropped_calls = voice_cdr[voice_cdr["STATUS"] == "DROPPED"]

    if dropped_calls.shape[0] > 15:
        logging.info(dropped_calls.sample(15).sort_values("DATETIME"))
    else:
        logging.info(dropped_calls)

    all_logs_size = np.sum(df.shape[0] for df in logs.values())
    logging.info("\ntotal number of logs: {}".format(all_logs_size))

    for logid, lg in logs.items():
        logging.info(" {} {} logs".format(len(lg), logid))

    logging.info("""\nexecution times: "
     - building the circus: {}
     - running the simulation: {}
    """.format(built_time - start_time, execution_time - built_time))
Example #3
0
import logging
import pandas as pd

from trumania.core import circus
import trumania.core.util_functions as util_functions
from trumania.core.operations import FieldLogger
from trumania.core.random_generators import SequencialGenerator, FakerGenerator, NumpyRandomGenerator
from trumania.core.random_generators import ConstantDependentGenerator, ConstantGenerator

util_functions.setup_logging()

logging.info("building circus")


def create_circus_with_population():
    example_circus = circus.Circus(name="example",
                                   master_seed=12345,
                                   start=pd.Timestamp("1 Jan 2017 00:00"),
                                   step_duration=pd.Timedelta("1h"))

    person = example_circus.create_population(
        name="person",
        size=1000,
        ids_gen=SequencialGenerator(prefix="PERSON_"))

    person.create_attribute("NAME",
                            init_gen=FakerGenerator(
                                method="name",
                                seed=next(example_circus.seeder)))

    person.create_attribute("age",
Example #4
0
import logging

from test_cdr import run_cdr_scenario
from trumania.core.util_functions import setup_logging

# better run this outside of PyCharm for consistent measures...
#
# python tests/scenarios/long_cdr.py

if __name__ == "__main__":
    setup_logging()
    logging.info("starting a long CDR test ")
    params = {
        "time_step": 60,
        "n_cells": 200,
        "n_agents": 500,
        "n_subscribers": 25000,
        "average_degree": 20,
        "n_iterations": 200
    }

    run_cdr_scenario(params)

    """
    result on Svends's laptop:

     total number of logs: 392086
     execution times: "
     - building the circus: 0 days 00:01:32.156013
     - running the simulation: 0 days 00:14:07.355875