mirror of
				https://github.com/XRPLF/rippled.git
				synced 2025-11-04 11:15:56 +00:00 
			
		
		
		
	This change reduces the number of cores used to build and test, as using all cores may be contributing to occasional build and test failures. Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
		
			
				
	
	
		
			103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Test rippled
 | 
						|
 | 
						|
on:
 | 
						|
  workflow_call:
 | 
						|
    inputs:
 | 
						|
      verify_voidstar:
 | 
						|
        description: "Whether to verify the presence of voidstar instrumentation."
 | 
						|
        required: true
 | 
						|
        type: boolean
 | 
						|
      run_tests:
 | 
						|
        description: "Whether to run unit tests"
 | 
						|
        required: true
 | 
						|
        type: boolean
 | 
						|
 | 
						|
      runs_on:
 | 
						|
        description: Runner to run the job on as a JSON string
 | 
						|
        required: true
 | 
						|
        type: string
 | 
						|
      image:
 | 
						|
        description: "The image to run in (leave empty to run natively)"
 | 
						|
        required: true
 | 
						|
        type: string
 | 
						|
 | 
						|
      config_name:
 | 
						|
        description: "The name of the configuration."
 | 
						|
        required: true
 | 
						|
        type: string
 | 
						|
 | 
						|
      nproc_subtract:
 | 
						|
        description: "The number of processors to subtract when calculating parallelism."
 | 
						|
        required: true
 | 
						|
        type: number
 | 
						|
 | 
						|
jobs:
 | 
						|
  test:
 | 
						|
    name: Test ${{ inputs.config_name }}
 | 
						|
    runs-on: ${{ fromJSON(inputs.runs_on) }}
 | 
						|
    container: ${{ inputs.image != '' && inputs.image || null }}
 | 
						|
    timeout-minutes: 30
 | 
						|
    steps:
 | 
						|
      - name: Cleanup workspace
 | 
						|
        if: ${{ runner.os == 'macOS' }}
 | 
						|
        uses: XRPLF/actions/.github/actions/cleanup-workspace@3f044c7478548e3c32ff68980eeb36ece02b364e
 | 
						|
 | 
						|
      - name: Get number of processors
 | 
						|
        uses: XRPLF/actions/.github/actions/get-nproc@046b1620f6bfd6cd0985dc82c3df02786801fe0a
 | 
						|
        id: nproc
 | 
						|
        with:
 | 
						|
          subtract: ${{ inputs.nproc_subtract }}
 | 
						|
 | 
						|
      - name: Download rippled artifact
 | 
						|
        uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
 | 
						|
        with:
 | 
						|
          name: rippled-${{ inputs.config_name }}
 | 
						|
 | 
						|
      - name: Make binary executable (Linux and macOS)
 | 
						|
        shell: bash
 | 
						|
        if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }}
 | 
						|
        run: |
 | 
						|
          chmod +x ./rippled
 | 
						|
 | 
						|
      - name: Check linking (Linux)
 | 
						|
        if: ${{ runner.os == 'Linux' }}
 | 
						|
        shell: bash
 | 
						|
        run: |
 | 
						|
          ldd ./rippled
 | 
						|
          if [ "$(ldd ./rippled | grep -E '(libstdc\+\+|libgcc)' | wc -l)" -eq 0 ]; then
 | 
						|
            echo 'The binary is statically linked.'
 | 
						|
          else
 | 
						|
            echo 'The binary is dynamically linked.'
 | 
						|
            exit 1
 | 
						|
          fi
 | 
						|
 | 
						|
      - name: Verifying presence of instrumentation
 | 
						|
        if: ${{ inputs.verify_voidstar }}
 | 
						|
        shell: bash
 | 
						|
        run: |
 | 
						|
          ./rippled --version | grep libvoidstar
 | 
						|
 | 
						|
      - name: Run the embedded tests
 | 
						|
        if: ${{ inputs.run_tests }}
 | 
						|
        shell: bash
 | 
						|
        env:
 | 
						|
          BUILD_NPROC: ${{ steps.nproc.outputs.nproc }}
 | 
						|
        run: |
 | 
						|
          ./rippled --unittest --unittest-jobs ${BUILD_NPROC}
 | 
						|
 | 
						|
      - name: Run the separate tests
 | 
						|
        if: ${{ inputs.run_tests }}
 | 
						|
        env:
 | 
						|
          EXT: ${{ runner.os == 'Windows' && '.exe' || '' }}
 | 
						|
        shell: bash
 | 
						|
        run: |
 | 
						|
          for test_file in ./doctest/*${EXT}; do
 | 
						|
            echo "Executing $test_file"
 | 
						|
            chmod +x "$test_file"
 | 
						|
            if [[ "${{ runner.os }}" == "Windows" && "$test_file" == "./doctest/xrpl.test.net.exe" ]]; then
 | 
						|
              echo "Skipping $test_file on Windows"
 | 
						|
            else
 | 
						|
              "$test_file"
 | 
						|
            fi
 | 
						|
          done
 |