LCOV - code coverage report
Current view: top level - pageserver/src/bin - test_helper_slow_client_reads.rs (source / functions) Coverage Total Hit
Test: 6df3fc19ec669bcfbbf9aba41d1338898d24eaa0.info Lines: 0.0 % 48 0
Test Date: 2025-03-12 18:28:53 Functions: 0.0 % 8 0

            Line data    Source code
       1              : use std::io::{Read, Write, stdin, stdout};
       2              : use std::time::Duration;
       3              : 
       4              : use clap::Parser;
       5              : use pageserver_api::models::{PagestreamRequest, PagestreamTestRequest};
       6              : use utils::id::{TenantId, TimelineId};
       7              : use utils::lsn::Lsn;
       8              : 
       9              : #[derive(clap::Parser)]
      10              : struct Args {
      11            0 :     connstr: String,
      12            0 :     tenant_id: TenantId,
      13            0 :     timeline_id: TimelineId,
      14              : }
      15              : 
      16              : #[tokio::main]
      17            0 : async fn main() -> anyhow::Result<()> {
      18            0 :     let Args {
      19            0 :         connstr,
      20            0 :         tenant_id,
      21            0 :         timeline_id,
      22            0 :     } = Args::parse();
      23            0 :     let client = pageserver_client::page_service::Client::new(connstr).await?;
      24            0 :     let client = client.pagestream(tenant_id, timeline_id).await?;
      25            0 :     let (mut sender, _receiver) = client.split();
      26            0 : 
      27            0 :     eprintln!("filling the pipe");
      28            0 :     let mut msg = 0;
      29            0 :     loop {
      30            0 :         msg += 1;
      31            0 :         let fut = sender.send(pageserver_api::models::PagestreamFeMessage::Test(
      32            0 :             PagestreamTestRequest {
      33            0 :                 hdr: PagestreamRequest {
      34            0 :                     reqid: 0,
      35            0 :                     request_lsn: Lsn(23),
      36            0 :                     not_modified_since: Lsn(23),
      37            0 :                 },
      38            0 :                 batch_key: 42,
      39            0 :                 message: format!("message {}", msg),
      40            0 :             },
      41            0 :         ));
      42            0 :         let Ok(res) = tokio::time::timeout(Duration::from_secs(10), fut).await else {
      43            0 :             eprintln!("pipe seems full");
      44            0 :             break;
      45            0 :         };
      46            0 :         let _: () = res?;
      47            0 :     }
      48            0 : 
      49            0 :     let n = stdout().write(b"R")?;
      50            0 :     assert_eq!(n, 1);
      51            0 :     stdout().flush()?;
      52            0 : 
      53            0 :     eprintln!("waiting for signal to tell us to exit");
      54            0 : 
      55            0 :     let mut buf = [0u8; 1];
      56            0 :     stdin().read_exact(&mut buf)?;
      57            0 : 
      58            0 :     eprintln!("termination signal received, exiting");
      59            0 : 
      60            0 :     anyhow::Ok(())
      61            0 : }
        

Generated by: LCOV version 2.1-beta