Skip to content

feat(chain): add parallel chain branches #33

@maycon

Description

@maycon

Summary

Add support for parallel execution branches within a chain. This enables testing complex scenarios where multiple actions must happen simultaneously after setup steps.

Parent Issue

Configuration

race_attack:
  race:
    threads: 20
    
    chain:
      # Sequential setup
      - name: login
        request: "POST /login"
        extract:
          session: "cookie.session"
      
      - name: get_balance
        request: "GET /api/balance"
        extract:
          balance: "json.amount"
      
      # Parallel branches - execute simultaneously
      - parallel:
          - name: withdraw_cash
            request: "POST /api/withdraw"
          
          - name: transfer_out
            request: "POST /api/transfer"
          
          - name: buy_item
            request: "POST /api/purchase"
      
      # Continue sequentially after parallel completes
      - name: verify
        request: "GET /api/balance"

Execution Flow

Sequential:    [login] → [get_balance] → ...
                                         ↓
Parallel:                          ┌─[withdraw]─┐
                                   ├─[transfer]─┤ (all 3 run simultaneously)
                                   └─[purchase]─┘
                                         ↓
Sequential:                          [verify]

Use Cases

1. Multi-Vector Attack

parallel:
  - name: drain_balance
    request: "POST /api/withdraw?amount=all"
  
  - name: request_refund
    request: "POST /api/refund?order=123"
  
  - name: transfer_to_friend
    request: "POST /api/transfer?to=friend"

2. Resource Exhaustion

parallel:
  - name: book_seat_1
    request: "POST /api/book?seat=1A"
  
  - name: book_seat_2
    request: "POST /api/book?seat=1B"
  
  - name: book_seat_3
    request: "POST /api/book?seat=1C"

Implementation Notes

  • Parallel branches execute in separate threads/coroutines
  • All branches must complete before chain continues
  • Each branch has access to same chain context (read-only for parallel section)
  • Results from parallel branches merged into chain context

Acceptance Criteria

  • Parse parallel blocks in chain config
  • Execute parallel steps concurrently
  • Wait for all parallel steps to complete
  • Merge parallel results into chain context
  • Handle errors in parallel branches
  • Support nested parallel blocks (optional)
  • Unit tests
  • Documentation

Future Consideration

This is an advanced feature that may be implemented in a future version after basic chaining is stable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions