Check Raster Tile Data ---------------------- .. uml:: skinparam style strictuml hide footbox title Check Raster Tile Data workflow actor User box "Client-side" #EDEDED participant Frontend end box box "Server-side" #lightblue participant Backend end box User -> Frontend: Open image activate Frontend Frontend -> Backend : 1. OPEN_FILE activate Backend Frontend <-- Backend : 2. OPEN_FILE_ACK deactivate Backend User <-- Frontend: Displays image deactivate Frontend User -> Frontend: Request tiles activate Frontend Frontend -> Backend : 3. SET_IMAGE_CHANNELS / ADD_REQUIRED_TILES activate Backend Frontend <--[#red] Backend : 4. RASTER_TILE_DATA [Check 1] deactivate Backend User <-- Frontend: Tile data received deactivate Frontend CHECK_RASTER_TILE_DATA ~~~~~~~~~~~~~~~~~~~~~~ See the `source code `__. This test verifies that raster tile data values at different layers and compression types are correctly delivered by the backend. 1. Frontend sends: **OPEN_FILE** (``OpenFile``) .. code-block:: protobuf directory = "set_QA" file = "cluster_04096.fits" hdu = "0" file_id = 0 render_mode = RASTER 2. Backend returns: **OPEN_FILE_ACK** (``OpenFileAck``) :red-text:`Check 1:` the OPEN_FILE_ACK should satisfy: - OPEN_FILE_ACK.success = True 3. Frontend sends: **ADD_REQUIRED_TILES** (``AddRequiredTiles``) with NONE compression .. code-block:: protobuf file_id = 0 compression_quality = 11 compression_type = NONE tiles = [0] 4. Backend returns: **RASTER_TILE_DATA** (``RasterTileData``) :red-text:`Check 2:` the RASTER_TILE_DATA should satisfy: - RASTER_TILE_DATA.file_id = 0 - RASTER_TILE_DATA.channel = 0 - RASTER_TILE_DATA.stokes = 0 - RASTER_TILE_DATA.compression_type = NONE - RASTER_TILE_DATA.tiles.length = 1 - RASTER_TILE_DATA.tiles[0].x = 0, y = 0, layer = 0 - RASTER_TILE_DATA.tiles[0].height = 256, width = 256 - RASTER_TILE_DATA.tiles[0].image_data at pixel (256,256) = 2.72519 **ZFP compression at multiple layers (layers 1-4)** 5. Frontend sends: **ADD_REQUIRED_TILES** (``AddRequiredTiles``) for each of 4 layers with ZFP compression .. code-block:: protobuf file_id = 0 compression_type = ZFP compression_quality = 11 :red-text:`Check 3:` for each layer, the RASTER_TILE_DATA should satisfy: - RASTER_TILE_DATA.file_id = 0 - RASTER_TILE_DATA.channel = 0 - RASTER_TILE_DATA.stokes = 0 - RASTER_TILE_DATA.compression_type = ZFP - Each tile has correct x, y, layer, height (256), and width (256) - Image data length and spot-check byte values at indices [0, 50000, 100000, 150000, 200000] match expected values