Publish Framework tray enhancements and idle fingerprint retry
This commit is contained in:
@@ -15,6 +15,54 @@ class HardwareTest : public QObject {
|
||||
QFile file(path); QVERIFY(file.open(QIODevice::WriteOnly)); QCOMPARE(file.write(value), value.size());
|
||||
}
|
||||
private Q_SLOTS:
|
||||
void coreGroupFrequencies() {
|
||||
QTemporaryDir root;
|
||||
const QString base = root.path() + "/devices/system/cpu/cpufreq/";
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
const auto policy = base + "policy" + QString::number(i) + "/";
|
||||
put(policy + "related_cpus", QByteArray::number(i));
|
||||
put(policy + "scaling_cur_freq", QByteArray::number((i + 1) * 1000000));
|
||||
}
|
||||
// No core-type metadata: retain the original combined reading.
|
||||
auto sensors = frequencySensors(root.path());
|
||||
QCOMPARE(sensors.size(), 1);
|
||||
QCOMPARE(sensors[0].id, QString("cpu"));
|
||||
QVERIFY(sensors[0].primary);
|
||||
QCOMPARE(sensorValue(sensors[0]), std::optional<double>(2000));
|
||||
put(root.path() + "/bus/event_source/devices/cpu_core/cpus", "2");
|
||||
put(root.path() + "/bus/event_source/devices/cpu_atom/cpus", "0-1");
|
||||
sensors = frequencySensors(root.path());
|
||||
QCOMPARE(sensors.size(), 5);
|
||||
QCOMPARE(sensors[0].id, QString("cpu/p"));
|
||||
QCOMPARE(sensors[1].id, QString("cpu/e"));
|
||||
QCOMPARE(sensors[2].id, QString("cpu"));
|
||||
QVERIFY(sensors[0].primary && sensors[1].primary && !sensors[2].primary);
|
||||
QCOMPARE(sensorValue(sensors[0]), std::optional<double>(3000));
|
||||
QCOMPARE(sensorValue(sensors[1]), std::optional<double>(1500));
|
||||
QCOMPARE(sensorValue(sensors[2]), std::optional<double>(2000));
|
||||
QCOMPARE(sensors[3].id, QString("cpu/p/max"));
|
||||
QCOMPARE(sensors[4].id, QString("cpu/e/max"));
|
||||
QVERIFY(!sensors[3].primary && !sensors[4].primary);
|
||||
QCOMPARE(sensorValue(sensors[3]), std::optional<double>(3000));
|
||||
QCOMPARE(sensorValue(sensors[4]), std::optional<double>(2000));
|
||||
put(base + "policy0/scaling_cur_freq", "4000000");
|
||||
QCOMPARE(sensorValue(sensors[4]), std::optional<double>(4000));
|
||||
put(base + "policy0/scaling_cur_freq", "1000000");
|
||||
QCOMPARE(sensorValue(sensors[4]), std::optional<double>(2000)); // Not a historical peak.
|
||||
// Missing readings aren't zeroes, and membership isn't guessed by speed.
|
||||
put(base + "policy0/scaling_cur_freq", "unavailable");
|
||||
QCOMPARE(sensorValue(sensors[1]), std::optional<double>(2000));
|
||||
QCOMPARE(sensorValue(sensors[4]), std::optional<double>(2000));
|
||||
put(base + "policy1/scaling_cur_freq", "unavailable");
|
||||
QVERIFY(!sensorValue(sensors[1]));
|
||||
QVERIFY(!sensorValue(sensors[4]));
|
||||
QCOMPARE(sensorValue(sensors[2]), std::optional<double>(3000));
|
||||
put(base + "policy2/related_cpus", "1 2");
|
||||
sensors = frequencySensors(root.path());
|
||||
QCOMPARE(sensors.size(), 1); // A policy spanning types cannot be split.
|
||||
QVERIFY(sensors[0].primary);
|
||||
}
|
||||
|
||||
void energyCounters() {
|
||||
EnergyCounter counter;
|
||||
const quint64 range = 262143328850ULL;
|
||||
|
||||
Reference in New Issue
Block a user