LCOV - code coverage report
Current view: top level - pageserver/src/bin - test_helper_slow_client_reads.rs (source / functions) Coverage Total Hit
Test: 07bee600374ccd486c69370d0972d9035964fe68.info Lines: 0.0 % 48 0
Test Date: 2025-02-20 13:11:02 Functions: 0.0 % 8 0

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

Generated by: LCOV version 2.1-beta