# Using simulation mode to try out graph branching

**URL:** <https://cylc.discourse.group/t/using-simulation-mode-to-try-out-graph-branching/796>\
**Category:** Tips\
**Created:** [November 7, 2023, 10:42pm UTC](https://cylc.discourse.group/t/using-simulation-mode-to-try-out-graph-branching/796 "2023-11-07T22:42:56Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![wxtim](https://yyz2.discourse-cdn.com/free1/user_avatar/cylc.discourse.group/wxtim/32/151_2.png) [@wxtim](https://cylc.discourse.group/u/wxtim)\
**Post date:** [November 7, 2023, 10:42pm UTC](https://cylc.discourse.group/t/using-simulation-mode-to-try-out-graph-branching/796/1 "2023-11-07T22:42:56Z")

</div>

Sometimes you want to test how a branching workflow will run. You can use simulation mode to test workflows that branch on success or failure.

Here is an example where you want to get some data and carry out analysis. If the data is missing you are happy to skip the analysis and carry on:

```auto
        T-00 = """
            get_data:succeed? => analyse_data
            get_data:fail? | analyse_data => housekeep
        """

```

You can use simulation mode to check failure handling. To do this you tell simulation mode to make some tasks fail. Add the following to the `[runtime][get_data]` task:

```auto
        [[[simulation]]]
            fail cycle points = 1900-01-01T02:00, 1900-01-01T07:00

```

… and run the workflow in simulation mode

```console
cylc vip --mode simulation

```

You can then look at the workflow logs and check if the Cylc ran the `analyse_data` tasks for those cycles.
