# Copyright (C) 2021 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html
#
# GitHub Action continuous integration script for ICU post-merge tasks.

name: GHA ICU Merge CI

on:
  push:
    branches:
      - main	
      - 'maint/maint*'

jobs:

  # Test ICU4J with little-endian ICU4C data only
  icu4j-little-endian-data-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout and setup
        uses: actions/checkout@v2
        with:
          lfs: true
      - name: Checkout lfs objects
        run: git lfs pull
      - uses: actions/setup-java@v1
        with:
          java-version: '11'
      - name: ICU4J little-endian
        run: |
          cd icu4c/source;
          ICU_DATA_BUILDTOOL_OPTS=--include_uni_core_data ./runConfigureICU Linux;
          make -j2 check;
          mkdir /tmp/icu4j_data_test;
          cp -P data/out/tmp/icudt*l* /tmp/icu4j_data_test/
          cd ../../icu4j;
          ant clean;
          ant -Dicu4c.data.path=/tmp/icu4j_data_test check;

  # Compile libraries used by all ICU4C performance tests.
  icu4c-store-perf-libs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Build ICU libraries
        run: |
          cd icu4c/source;
          ./runConfigureICU Linux;
          make -j 2 all;
          cd lib;
          cp -Ps ../tools/ctestfw/libicutest* .
      - name: Upload ICU libraries
        uses: actions/upload-artifact@v2
        with:
          name: icu-perf-libs
          path: icu4c/source/lib
          retention-days: 1

  # Assorted ICU4C performance tests
  icu4c-performance-tests:
    needs: icu4c-store-perf-libs
    strategy:
      fail-fast: false
      matrix:
        perf: [charperf, usetperf, utfperf]
        include:
          - perf: charperf
            tests: TestIsAlpha TestIsUpper TestIsLower TestIsDigit TestIsSpace TestIsAlphaNumeric TestIsPrint TestIsControl TestToLower TestToUpper TestIsWhiteSpace
          - perf: usetperf
            tests: titlecase_letter_add  titlecase_letter_contains titlecase_letter_iterator unassigned_add unassigned_contains unassigned_iterator pattern1 pattern2 pattern3
          - perf: utfperf
            tests: Roundtrip FromUnicode FromUTF8
            file: "-f ../../icu4j/perf-tests/data/conversion/xuzhimo.txt"
            flag: "-e gb18030"

    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Create directory for lib files
        run: mkdir icu4c/source/perflib
      - name: Get ICU libs
        uses: actions/download-artifact@v2
        with:
          name: icu-perf-libs
          path: icu4c/source/lib

      - name: Build and run ICU4C perf tests
        run: |
          cd icu4c/source;
          ./runConfigureICU Linux;
          (cd test/perf && make -j2 everything && mkdir -p results && mkdir -p results/${{ matrix.perf }})
          LD_LIBRARY_PATH=lib ./test/perf/${{ matrix.perf }}/${{ matrix.perf }} ${{ matrix.flag }} -t 5 -p 10 ${{ matrix.file }} ${{ matrix.tests }} | tee test/perf/results/${{ matrix.perf }}/output.txt

      - name: Store performance test results
        uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12
        with:
          # The perf tests result data is in ndjson format.
          tool: 'ndjson'
          output-file-path: icu4c/source/test/perf/results/${{ matrix.perf }}/output.txt
          # Tentative setting.
          alert-threshold: '200%'
          fail-on-alert: true
          gh-pages-branch: perfdata
          benchmark-data-dir-path: perf/results/${{ matrix.perf }}
          auto-push: true
          github-token: ${{ secrets.GITHUB_TOKEN }}
          comment-on-alert: true

  # Assorted ICU4C performance tests using data files
  icu4c-performance-tests-with-files:
    needs: icu4c-store-perf-libs
    strategy:
      fail-fast: false
      # Matrix of test drivers and test data and, if applicable, flags. Note
      # that GHA first excludes the 'exclude:' items from the total of
      # combinations and then adds the 'include:' items.
      matrix:
        perf: [collperf, ustrperf, normperf]
        data: [TestNames_Asian, TestNames_Chinese, TestNames_Japanese, TestNames_Japanese_h, TestNames_Japanese_k, TestNames_Korean, TestNames_Latin, TestNames_Russian, TestNames_SerbianSH, TestNames_SerbianSR, TestNames_Simplified_Chinese, TestNames_Thai, th18057, thesis, vfear11a]
        include:
          - perf: collperf
            tests: TestIcu_KeyGen_null TestIcu_qsort_strcoll_null TestIcu_qsort_usekey TestIcu_BinarySearch_strcoll_null TestIcu_BinarySearch_usekey
          - perf: ustrperf
            tests: TestCtor TestCtor1 TestCtor2 TestCtor3 TestAssign TestAssign1 TestAssign2 TestGetch TestCatenate TestScan TestScan1 TestScan2
            flag: "-l -u"
          - perf: normperf
            tests: TestICU_NFC_NFD_Text TestICU_NFC_NFC_Text TestICU_NFC_Orig_Text TestICU_NFD_NFD_Text TestICU_NFD_NFC_Text TestICU_NFD_Orig_Text
        exclude:
          - perf: collperf
            data: th18057
          - perf: collperf
            data: thesis
          - perf: collperf
            data: vfear11a
          - perf: ustrperf
            data: TestNames_Japanese
          - perf: ustrperf
            data: thesis
          - perf: ustrperf
            data: vfear11a
          - perf: normperf
            data: TestNames_Simplified_Chinese

    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Create directory for lib files
        run: mkdir icu4c/source/perflib
      - name: Get ICU libs
        uses: actions/download-artifact@v2
        with:
          name: icu-perf-libs
          path: icu4c/source/lib

      - name: Build and run ICU4C perf tests
        env:
          DATA_FILE_PATH: ../../icu4j/perf-tests/data/collation
        run: |
          cd icu4c/source;
          ./runConfigureICU Linux;
          (cd test/perf && make -j2 everything && mkdir -p results && mkdir -p results/${{ matrix.perf }} && mkdir -p results/${{ matrix.perf }}/${{ matrix.data }})
          LD_LIBRARY_PATH=lib ./test/perf/${{ matrix.perf }}/${{ matrix.perf }} ${{ matrix.flag }} -t 5 -p 10 -f $DATA_FILE_PATH/${{ matrix.data }}.txt ${{ matrix.tests }} | tee test/perf/results/${{ matrix.perf }}/${{ matrix.data }}/output.txt

      - name: Store performance test results
        uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12
        with:
          # The perf tests result data is in ndjson format.
          tool: 'ndjson'
          output-file-path: icu4c/source/test/perf/results/${{ matrix.perf }}/${{ matrix.data }}/output.txt
          # Tentative setting.
          alert-threshold: '200%'
          fail-on-alert: true
          gh-pages-branch: perfdata
          benchmark-data-dir-path: perf/results/${{ matrix.perf }}/${{ matrix.data }}
          auto-push: true
          github-token: ${{ secrets.GITHUB_TOKEN }}
          comment-on-alert: true

  # String search performance test
  icu4c-strsrchperf:
    needs: icu4c-store-perf-libs
    strategy:
      fail-fast: false
      # Matrix of locales and corresponding test data.
      matrix:
        locale: [de, en, fr, ja, ru, th, zh]
        include:
          - locale: de
            data: udhr_deu_1996
          - locale: en
            data: udhr_eng
          - locale: fr
            data: udhr_fra
          - locale: ja
            data: udhr_jpn
          - locale: ru
            data: udhr_rus
          - locale: th
            data: udhr_tha
          - locale: zh
            data: udhr_cmn_hans

    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Create directory for lib files
        run: mkdir icu4c/source/perflib
      - name: Get ICU libs
        uses: actions/download-artifact@v2
        with:
          name: icu-perf-libs
          path: icu4c/source/lib

      - name: Build and run strschrperf test
        env:
          DATA_FILE_PATH: ../../icu4j/perf-tests/data/udhr
        run: |
          cd icu4c/source;
          ./runConfigureICU Linux;
          (cd test/perf && make -j2 everything && mkdir -p results && mkdir -p results/strsrchperf && mkdir -p results/strsrchperf/${{ matrix.locale }})
          LD_LIBRARY_PATH=lib ./test/perf/strsrchperf/strsrchperf -b Test_ICU_Forward_Search Test_ICU_Backward_Search -t 5 -p 10 -L ${{ matrix.locale }} -f $DATA_FILE_PATH/${{ matrix.data }}.txt | tee test/perf/results/strsrchperf/${{ matrix.locale }}/output.txt

      - name: Store performance test results
        uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12
        with:
          # The perf tests result data is in ndjson format.
          tool: 'ndjson'
          output-file-path: icu4c/source/test/perf/results/strsrchperf/${{ matrix.locale }}/output.txt
          # Tentative setting.
          alert-threshold: '200%'
          fail-on-alert: true
          gh-pages-branch: perfdata
          benchmark-data-dir-path: perf/results/strsrchperf/${{ matrix.locale }}
          auto-push: true
          github-token: ${{ secrets.GITHUB_TOKEN }}
          comment-on-alert: true

  # ICU4J performance test for Unicode sets
  icu4j-unicodesetperf:
    strategy:
      fail-fast: false
      matrix:
        perf: [UnicodeSetAdd, UnicodeSetContains, UnicodeSetIterate]

    runs-on: ubuntu-latest
    steps:
      - name: Checkout and setup
        uses: actions/checkout@v2
        with:
          lfs: true
      - name: Checkout lfs objects
        run: git lfs pull
      - uses: actions/setup-java@v1
        with:
          java-version: '8'

      - name: Build and run unicodesetperf test
        run: |
          # This file needs to be restored  otherwise GHA cannot
          # check-out the perfdata branch. Setting up this task with GH lfs
          # modifies the file but the details of why and how are unknown.
          git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2;
          git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2;
          cd icu4j;
          ant;
          ant perf-tests;
          git status
          cd perf-tests;
          mkdir -p perf/results/j_unicodesetperf/${{ matrix.perf }};
          java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar com.ibm.icu.dev.test.perf.UnicodeSetPerf ${{ matrix.perf }} -a -t 2 -p 4 [:Lt:] | tee perf/results/j_unicodesetperf/${{ matrix.perf }}/output.txt

      - name: Store performance test results
        uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12
        with:
          # The perf tests result data is in ndjson format.
          tool: 'ndjson'
          output-file-path: icu4j/perf-tests/perf/results/j_unicodesetperf/${{ matrix.perf }}/output.txt
          # Tentative setting.
          alert-threshold: '200%'
          fail-on-alert: true
          gh-pages-branch: perfdata
          benchmark-data-dir-path: perf/results/j_unicodesetperf/${{ matrix.perf }}
          auto-push: true
          github-token: ${{ secrets.GITHUB_TOKEN }}
          comment-on-alert: true

  # ICU4J performance test for character APIs
  icu4j-ucharacterperf:
    strategy:
      fail-fast: false

    runs-on: ubuntu-latest
    steps:
      - name: Checkout and setup
        uses: actions/checkout@v2
        with:
          lfs: true
      - name: Checkout lfs objects
        run: git lfs pull
      - uses: actions/setup-java@v1
        with:
          java-version: '8'

      - name: Build and run ucharacterperf test
        run: |
          # This file needs to be restored  otherwise GHA cannot
          # check-out the perfdata branch. Setting up this task with GH lfs
          # modifies the file but the details of why and how are unknown.
          git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2;
          git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2;
          cd icu4j;
          ant;
          ant perf-tests;
          cd perf-tests;
          mkdir -p perf/results/j_ucharacterperf;
          java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar com.ibm.icu.dev.test.perf.UCharacterPerf -a -t 2 -p 4 0 ffff | tee perf/results/j_ucharacterperf/output.txt

      - name: Store performance test results
        uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12
        with:
          # The perf tests result data is in ndjson format.
          tool: 'ndjson'
          output-file-path: icu4j/perf-tests/perf/results/j_ucharacterperf/output.txt
          # Tentative setting.
          alert-threshold: '200%'
          fail-on-alert: true
          gh-pages-branch: perfdata
          benchmark-data-dir-path: perf/results/j_ucharacterperf
          auto-push: true
          github-token: ${{ secrets.GITHUB_TOKEN }}
          comment-on-alert: true

  # ICU4J performance test for decimal formatting
  icu4j-decimalformatperf:
    strategy:
      fail-fast: false
      matrix:
        perf: [TestICUConstruction, TestICUParse, TestICUFormat]
        locale: [en_US, de_DE]

    runs-on: ubuntu-latest
    steps:
      - name: Checkout and setup
        uses: actions/checkout@v2
        with:
          lfs: true
      - name: Checkout lfs objects
        run: git lfs pull
      - uses: actions/setup-java@v1
        with:
          java-version: '8'

      - name: Build and run decimalformatperf
        run: |
          # This file needs to be restored  otherwise GHA cannot
          # check-out the perfdata branch. Setting up this task with GH lfs
          # modifies the file but the details of why and how are unknown.
          git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2;
          git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2;
          cd icu4j;
          ant;
          ant perf-tests;
          cd perf-tests;
          mkdir -p perf/results/j_decimalformatperf/${{ matrix.locale }}/${{ matrix.perf }};
          # Delay execution by random number of seconds. Spreading execution of multiple
          # tests over 180 secs. minimizes the possibility of push conflicts when storing
          # tests results in the data branch.
          sleep $(($RANDOM % 180));
          java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar com.ibm.icu.dev.test.perf.DecimalFormatPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -L ${{ matrix.locale }} "#,###.##" "1.234,56" -r 1 | tee perf/results/j_decimalformatperf/${{ matrix.locale }}/${{ matrix.perf }}/output.txt

      - name: Store performance test results
        uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12
        with:
          # The perf tests result data is in ndjson format.
          tool: 'ndjson'
          output-file-path: icu4j/perf-tests/perf/results/j_decimalformatperf/${{ matrix.locale }}/${{ matrix.perf }}/output.txt
          # Tentative setting.
          alert-threshold: '200%'
          fail-on-alert: true
          gh-pages-branch: perfdata
          benchmark-data-dir-path: perf/results/j_decimalformatperf/${{ matrix.locale }}/${{ matrix.perf }}
          auto-push: true
          github-token: ${{ secrets.GITHUB_TOKEN }}
          comment-on-alert: true

  # ICU4J performance test for normalization
  icu4j-normperf:
    strategy:
      fail-fast: false
      matrix:
        perf: [TestICU_NFD_NFC_Text, TestICU_NFC_NFC_Text, TestICU_NFC_Orig_Text, TestICU_NFD_NFC_Text, TestICU_NFD_NFD_Text, TestICU_NFD_Orig_Text]
        source_text: [TestNames_Asian, TestNames_Chinese, TestNames_SerbianSH]
        mode: [-l]

    runs-on: ubuntu-latest
    steps:
      - name: Checkout and setup
        uses: actions/checkout@v2
        with:
          lfs: true
      - name: Checkout lfs objects
        run: git lfs pull
      - uses: actions/setup-java@v1
        with:
          java-version: '8'

      - name: Build and run normperf
        env:
          DATA_FILE_PATH: data/collation
        run: |
          # This file needs to be restored  otherwise GHA cannot
          # check-out the perfdata branch. Setting up this task with GH lfs
          # modifies the file but the details of why and how are unknown.
          git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2;
          git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2;
          cd icu4j;
          ant;
          ant perf-tests;
          cd perf-tests;
          mkdir -p perf/results/j_normperf/${{ matrix.source_text }}/${{ matrix.perf }};
          # Delay execution by random number of seconds. Spreading execution of multiple
          # tests over 180 secs. minimizes the possibility of push conflicts when storing
          # tests results in the data branch.
          sleep $(($RANDOM % 180));
          java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar com.ibm.icu.dev.test.perf.NormalizerPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -f $DATA_FILE_PATH/${{ matrix.source_text }}.txt -e UTF-8 ${{ matrix.mode }} | tee perf/results/j_normperf/${{ matrix.source_text }}/${{ matrix.perf }}/output.txt
          cat perf/results/j_normperf/${{ matrix.source_text }}/${{ matrix.perf }}/output.txt

      - name: Store performance test results
        uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12
        with:
          # The perf tests result data is in ndjson format.
          tool: 'ndjson'
          output-file-path: icu4j/perf-tests/perf/results/j_normperf/${{ matrix.source_text }}/${{ matrix.perf }}/output.txt
          # Tentative setting.
          alert-threshold: '200%'
          fail-on-alert: true
          gh-pages-branch: perfdata
          benchmark-data-dir-path: perf/results/j_normperf/${{ matrix.source_text }}/${{ matrix.perf }}
          auto-push: true
          github-token: ${{ secrets.GITHUB_TOKEN }}
          comment-on-alert: true

  # ICU4J performance test for encoding conversion
  icu4j-converterperf:
    strategy:
      fail-fast: false
      matrix:
        source_text: [arabic, english, french, greek, hebrew, hindi, japanese, korean, s-chinese]
        perf: [TestCharsetDecoderICU, TestCharsetEncoderICU]
        test_enc: [UTF-8]
        include:
          - test_enc: csisolatinarabic
            source_text: arabic
            perf: TestCharsetDecoderICU
          - test_enc: csisolatinarabic
            source_text: arabic
            perf: TestCharsetEncoderICU
          - test_enc: csisolatin1
            source_text: french
            perf: TestCharsetDecoderICU
          - test_enc: csisolatin1
            source_text: french
            perf: TestCharsetEncoderICU
          - test_enc: csisolatingreek
            source_text: greek
            perf: TestCharsetDecoderICU
          - test_enc: csisolatingreek
            source_text: greek
            perf: TestCharsetEncoderICU
          - test_enc: csisolatinhebrew
            source_text: hebrew
            perf: TestCharsetDecoderICU
          - test_enc: csisolatinhebrew
            source_text: hebrew
            perf: TestCharsetEncoderICU
          - test_enc: EUC-JP
            source_text: japanese
            perf: TestCharsetDecoderICU
          - test_enc: EUC-JP
            source_text: japanese
            perf: TestCharsetEncoderICU
          - test_enc: csiso2022jp
            source_text: japanese
            perf: TestCharsetDecoderICU
          - test_enc: csiso2022jp
            source_text: japanese
            perf: TestCharsetEncoderICU
          - test_enc: csiso2022kr
            source_text: korean
            perf: TestCharsetDecoderICU
          - test_enc: csiso2022kr
            source_text: korean
            perf: TestCharsetEncoderICU
          - test_enc: EUC-CN
            source_text: s-chinese
            perf: TestCharsetDecoderICU
          - test_enc: EUC-CN
            source_text: s-chinese
            perf: TestCharsetEncoderICU
          - test_enc: UTF-16BE
            source_text: french
            perf: TestCharsetDecoderICU
          - test_enc: UTF-16BE
            source_text: french
            perf: TestCharsetEncoderICU
          - test_enc: UTF-16LE
            source_text: french
            perf: TestCharsetDecoderICU
          - test_enc: UTF-16LE
            source_text: french
            perf: TestCharsetEncoderICU
          - test_enc: US-ASCII
            source_text: english
            perf: TestCharsetDecoderICU
          - test_enc: US-ASCII
            source_text: english
            perf: TestCharsetEncoderICU

    runs-on: ubuntu-latest
    steps:
      - name: Checkout and setup
        uses: actions/checkout@v2
        with:
          lfs: true
      - name: Checkout lfs objects
        run: git lfs pull
      - uses: actions/setup-java@v1
        with:
          java-version: '8'

      - name: Build and run converterperf
        env:
          DATA_FILE_PATH: data/conversion
        run: |
          # This file needs to be restored  otherwise GHA cannot
          # check-out the perfdata branch. Setting up this task with GH lfs
          # modifies the file but the details of why and how are unknown.
          git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2;
          git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2;
          cd icu4j;
          ant;
          ant perf-tests;
          cd perf-tests;
          mkdir -p perf/results/j_converterperf/${{ matrix.source_text }}/${{ matrix.test_enc }}/${{ matrix.perf }};
          # Delay execution by random number of seconds. Spreading execution of multiple
          # tests over 180 secs. minimizes the possibility of push conflicts when storing
          # tests results in the data branch.
          sleep $(($RANDOM % 180));
          java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar:../icu4j-charset.jar com.ibm.icu.dev.test.perf.ConverterPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -f $DATA_FILE_PATH/${{ matrix.source_text }}.txt -e UTF-8 -T ${{ matrix.test_enc }} | tee perf/results/j_converterperf/${{ matrix.source_text }}/${{ matrix.test_enc }}/${{ matrix.perf }}/output.txt

      - name: Store performance test results
        uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12
        with:
          # The perf tests result data is in ndjson format.
          tool: 'ndjson'
          output-file-path: icu4j/perf-tests/perf/results/j_converterperf/${{ matrix.source_text }}/${{ matrix.test_enc }}/${{ matrix.perf }}/output.txt
          # Tentative setting.
          alert-threshold: '200%'
          fail-on-alert: true
          gh-pages-branch: perfdata
          benchmark-data-dir-path: perf/results/j_converterperf/${{ matrix.source_text }}/${{ matrix.test_enc }}/${{ matrix.perf }}
          auto-push: true
          github-token: ${{ secrets.GITHUB_TOKEN }}
          comment-on-alert: true

  # ICU4J performance test for date formatting
  icu4j-dateformatperf:
    strategy:
      fail-fast: false
      matrix:
        perf: [TestICUConstruction, TestICUParse, TestICUFormat]
        locale: [en_US]
        # The parameters don't make for good directory names. Add an identifying digit
        # at the end to be used as directory name for the results.
        parms: ['"dddd MMM yyyy" "15 Jan 2007" 1', '"HH:mm" "13:13" 2', '"HH:mm zzzz" "13:13 Pacific Standard Time" 3', '"HH:mm z" "13:13 PST" 4', '"HH:mm Z" "13:13 -0800" 5']
        include:
          - locale: sw_KE
            parms: '"dddd MMM yyyy" "15 Jan 2007" 1'
            perf: TestICUConstruction
          - locale: sw_KE
            parms: '"dddd MMM yyyy" "15 Jan 2007" 1'
            perf: TestICUParse
          - locale: sw_KE
            parms: '"dddd MMM yyyy" "15 Jan 2007" 1'
            perf: TestICUFormat

    runs-on: ubuntu-latest
    steps:
      - name: Checkout and setup
        uses: actions/checkout@v2
        with:
          lfs: true
      - name: Checkout lfs objects
        run: git lfs pull
      - uses: actions/setup-java@v1
        with:
          java-version: '8'

      - name: Extract identifying digit and parameter.
        run: |
          ddir='${{ matrix.parms }}';
          echo "PARM=${ddir:: -2}" >> $GITHUB_ENV;
          echo "DDIR=${ddir: -1}" >> $GITHUB_ENV
      - name: Build and run dateformatperf
        run: |
          # This file needs to be restored  otherwise GHA cannot
          # check-out the perfdata branch. Setting up this task with GH lfs
          # modifies the file but the details of why and how are unknown.
          git restore --staged tools/multi/proj/icu4cscan/old-xmls.tar.bz2
          git restore tools/multi/proj/icu4cscan/old-xmls.tar.bz2
          cd icu4j;
          ant;
          ant perf-tests;
          cd perf-tests;
          mkdir -p perf/results/j_dateformatperf/${{ matrix.locale }}/${{ matrix.perf }}/${{ env.DDIR }};
          # Delay execution by random number of seconds. Spreading execution of multiple
          # tests over 180 secs. minimizes the possibility of push conflicts when storing
          # tests results in the data branch.
          sleep $(($RANDOM % 180));
          java -cp ./out/bin:../tools/misc/out/bin/:../icu4j.jar com.ibm.icu.dev.test.perf.DateFormatPerformanceTest ${{ matrix.perf }} -a -t 2 -p 4 -L ${{ matrix.locale }} ${{ env.PARM }} -r 1 | tee perf/results/j_dateformatperf/${{ matrix.locale }}/${{ matrix.perf }}/${{ env.DDIR }}/output.txt

      - name: Store performance test results
        uses: gregtatum/github-action-benchmark@d3f06f738e9612988d575db23fae5ca0008d3d12
        with:
          # The perf tests result data is in ndjson format.
          tool: 'ndjson'
          output-file-path: icu4j/perf-tests/perf/results/j_dateformatperf/${{ matrix.locale }}/${{ matrix.perf }}/${{ env.DDIR }}/output.txt
          # Tentative setting.
          alert-threshold: '200%'
          fail-on-alert: true
          gh-pages-branch: perfdata
          benchmark-data-dir-path: perf/results/j_dateformatperf/${{ matrix.locale }}/${{ matrix.perf }}/${{ env.DDIR }}
          auto-push: true
          github-token: ${{ secrets.GITHUB_TOKEN }}
          comment-on-alert: true

  # Retrieve performance test results and upload results to remote repository
  perf-test-data-move:
    name: Copy perf data to remote repo for visualization
    needs: [icu4c-performance-tests, icu4c-performance-tests-with-files, icu4c-strsrchperf, icu4j-unicodesetperf, icu4j-ucharacterperf, icu4j-decimalformatperf, icu4j-normperf, icu4j-converterperf, icu4j-dateformatperf]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Switch to benchmark data storage branch.
        run: |
          git fetch
          git checkout perfdata

      - name: Publish data
        uses: peaceiris/actions-gh-pages@v3
        with:
          deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
          external_repository: unicode-org/icu-perf
          publish_branch: main
          publish_dir: ./perf
          keep_files: true

