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
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))
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",
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