Es wäre super nett, mit gradle vor dem Start von Tests (oder bei jedem Durchlauf, was auch immer die Aufgabe ist) zu überprüfen, ob wir genügend Festplattenspeicher haben (mehr als 10%).
Andernfalls können einige Tests fehlschlagen.
Zum Beispiel habe ich gradle check
für eine PR ausgeführt, die nichts mit netty3 zu tun hat, und es schlug im netty3-Modul immer fehl mit:
2> REPRODUCE WITH: gradle :modules:transport-netty3:integTest -Dtests.seed=E0B565B5C6B00017 -Dtests.class=org.elasticsearch.http.netty3.Netty3ClientYamlTestSuiteIT -Dtests.method="test {yaml=indices.get_alias/10_basic/Get aliases via /{index}/_alias/name,name}" -Dtests.security.manager=true -Dtests.locale=ar-KW -Dtests.timezone=CET
ERROR 30.1s | Netty3ClientYamlTestSuiteIT.test {yaml=indices.get_alias/10_basic/Get aliases via /{index}/_alias/name,name} <<< FAILURES!
> Throwable #1: java.lang.RuntimeException: Failure at [indices.get_alias/10_basic:5]: listener timeout after waiting for [30000] ms
> at __randomizedtesting.SeedInfo.seed([E0B565B5C6B00017:68E15A6F684C6DEF]:0)
> at org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase.executeSection(ESClientYamlSuiteTestCase.java:327)
> at org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase.test(ESClientYamlSuiteTestCase.java:300)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.io.IOException: listener timeout after waiting for [30000] ms
> at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:615)
> at org.elasticsearch.client.RestClient.performRequest(RestClient.java:212)
> at org.elasticsearch.client.RestClient.performRequest(RestClient.java:185)
> at org.elasticsearch.test.rest.yaml.ClientYamlTestClient.callApi(ClientYamlTestClient.java:227)
> at org.elasticsearch.test.rest.yaml.ClientYamlTestExecutionContext.callApiInternal(ClientYamlTestExecutionContext.java:107)
> at org.elasticsearch.test.rest.yaml.ClientYamlTestExecutionContext.callApi(ClientYamlTestExecutionContext.java:72)
> at org.elasticsearch.test.rest.yaml.section.DoSection.execute(DoSection.java:128)
> at org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase.executeSection(ESClientYamlSuiteTestCase.java:325)
> ... 38 more
Als ich mir modules/transport-netty3/build/cluster/integTest\ node0/elasticsearch-6.0.0-alpha1-SNAPSHOT/logs/modules_transport-netty3_integTest.log
ansah, sah ich:
[2016-09-19T10:32:20,078][WARN ][o.e.c.r.a.DiskThresholdMonitor] [tofpR8o] high disk watermark [90%] exceeded on [tofpR8o_Tv-QZ9t2AWtjug][tofpR8o][/Users/dpilato/Documents/Elasticsearch/dev/es-gradle/elasticsearch/modules/transport-netty3/build/cluster/integTest node0/elasticsearch-6.0.0-alpha1-SNAPSHOT/data/nodes/0] free: 2.9gb[0.6%], shards will be relocated away from this node
Ich habe jedoch 3 GB freien Speicherplatz.
Wenn wir also zu Beginn unserer Integrationstests fehlschlagen oder warnen können, würde dies helfen, die Quelle des "Problems" schneller zu identifizieren.
Ich denke nicht, dass wir dem Build solche Dinge hinzufügen sollten. Die Überprüfung wäre nicht zuverlässig, da sie Zeit-of-Check-Time-of-Use-Problemen unterliegt und 90% wahrscheinlich nicht einmal der richtige Grenzwert für einen sauberen Build sind (weil Artefakte und Protokolle und eine Menge anderer Dinge vorhanden sind .) wird erstellt, um die Festplattennutzung auf über 90% zu erhöhen, bevor die abhängigen Tests hier ausgeführt werden).
Wenn ein Integrationstest fehlschlägt, ist es richtig, die Protokolle zu lesen und das Problem anzuzeigen, wie Sie es hier getan haben.
Ich schließe dies, aber öffne @dadoonet gerne wieder, wenn du anders
Ich komme mit dieser Antwort gut zurecht. Sagte nur "es ist schön zu haben". Ich kann ganz ohne leben.
Hilfreichster Kommentar
Ich denke nicht, dass wir dem Build solche Dinge hinzufügen sollten. Die Überprüfung wäre nicht zuverlässig, da sie Zeit-of-Check-Time-of-Use-Problemen unterliegt und 90% wahrscheinlich nicht einmal der richtige Grenzwert für einen sauberen Build sind (weil Artefakte und Protokolle und eine Menge anderer Dinge vorhanden sind .) wird erstellt, um die Festplattennutzung auf über 90% zu erhöhen, bevor die abhängigen Tests hier ausgeführt werden).
Wenn ein Integrationstest fehlschlägt, ist es richtig, die Protokolle zu lesen und das Problem anzuzeigen, wie Sie es hier getan haben.