• #Resilience: Testing

    Chaos Engineering

    // middleware.ts - Add to introduce random failures
    import { NextResponse } from 'next/server';
    
    export function middleware(request) {
      if (process.env.ENABLE_CHAOS === 'true') {
        // 10% of requests fail
        if (Math.random() < 0.1) {
          return new NextResponse(
            JSON.stringify({ message: 'Chaos monkey error' }),
            { status: 500 }
          );
        }
    
        // 20% of requests are slow
        if (Math.random() < 0.2) {
          return new Promise(resolve => {
            setTimeout(() => resolve(NextResponse.next()), 2000);
          });
        }
      }
    
      return NextResponse.next();
    }
    

    See ChaosMonkey