Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/test/tests/ide/jetbrains/warmup-indexing.sh
2500 views
1
#!/usr/bin/env bash
2
# Copyright (c) 2024 Gitpod GmbH. All rights reserved.
3
# Licensed under the GNU Affero General Public License (AGPL).
4
# See License.AGPL.txt in the project root for license information.
5
6
# This script is used to test JetBrains prebuild warmup indexing (search warmup-indexing.sh in codebase)
7
# It will get the last indexing json file (scan reason `On project open`)
8
# and check if the scheduled indexing count is greater than a specified threshold
9
#
10
# `exit 0` means JetBrains IDEs no need to indexing again
11
# Example: ./warmup-indexing.sh /workspace 1
12
13
set -euo pipefail
14
SystemDir=$1
15
Threshold=$2
16
17
ProjectIndexingFolder=$(find "$SystemDir"/log/indexing-diagnostic -type d -name "spring*" -print -quit)
18
JsonFiles=$(find "$ProjectIndexingFolder" -type f -name "*.json")
19
20
FilteredJsonFiles=()
21
for jsonFile in $JsonFiles; do
22
if jq -e '.projectIndexingActivityHistory.times.scanningReason == "On project open"' "$jsonFile" > /dev/null; then
23
FilteredJsonFiles+=("$jsonFile")
24
fi
25
done
26
mapfile -t sortedFiles < <(printf "%s\n" "${FilteredJsonFiles[@]}" | sort -r)
27
28
targetFile=${sortedFiles[0]}
29
echo "Target indexing json file: $targetFile"
30
scheduledIndexing=$(jq '.projectIndexingActivityHistory.fileCount.numberOfFilesScheduledForIndexingAfterScan' "$targetFile")
31
echo "Scheduled indexing count: $scheduledIndexing, threshold: $Threshold"
32
33
if [ "$scheduledIndexing" -gt "$Threshold" ]; then
34
echo "Error: Scheduled indexing count $scheduledIndexing > $Threshold" >&2
35
exit 1
36
else
37
exit 0
38
fi
39
40