Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

only display changed network errors during validation of connection #6542

Merged
merged 4 commits into from
Mar 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/linux-clang-compile-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
jobs:
build:
name: Linux Clang compilation and tests
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
container: ghcr.io/nextcloud/continuous-integration-client:client-5.15-15
steps:
- uses: actions/checkout@v4
Expand All @@ -15,11 +15,11 @@ jobs:
run: |
mkdir build
cd build
cmake .. -G Ninja -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DECM_ENABLE_SANITIZERS=address -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64
cmake .. -G Ninja -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64
ninja
- name: Run tests
run: |
cd build
useradd -m -s /bin/bash test
chown -R test:test .
su -c 'ASAN_OPTIONS=detect_odr_violation=0,detect_leaks=0 xvfb-run ctest --output-on-failure' test
su -c 'xvfb-run ctest --output-on-failure' test
6 changes: 3 additions & 3 deletions .github/workflows/linux-gcc-compile-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
jobs:
build:
name: Linux GCC compilation and tests
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
container: ghcr.io/nextcloud/continuous-integration-client:client-5.15-15
steps:
- uses: actions/checkout@v4
Expand All @@ -15,11 +15,11 @@ jobs:
run: |
mkdir build
cd build
cmake .. -G Ninja -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_BUILD_TYPE=Debug -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DECM_ENABLE_SANITIZERS=address -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64
cmake .. -G Ninja -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_BUILD_TYPE=Debug -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64
ninja
- name: Run tests
run: |
cd build
useradd -m -s /bin/bash test
chown -R test:test .
su -c 'ASAN_OPTIONS=detect_odr_violation=0,detect_leaks=0 xvfb-run ctest --output-on-failure' test
su -c 'xvfb-run ctest --output-on-failure' test
4 changes: 2 additions & 2 deletions .github/workflows/sonarcloud.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
jobs:
build:
name: SonarCloud analysis
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
container: ghcr.io/nextcloud/continuous-integration-client:client-5.15-15
env:
SONAR_SERVER_URL: "https://sonarcloud.io"
Expand All @@ -25,7 +25,7 @@ jobs:
run: |
mkdir build
cd build
cmake .. -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DBUILD_COVERAGE=ON -DOPENSSL_ROOT_DIR=/usr/local/lib64
cmake .. -G Ninja -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_BUILD_TYPE=Debug -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DBUILD_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} ninja
- name: Run tests
run: |
Expand Down
4 changes: 2 additions & 2 deletions src/gui/accountstate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,6 @@

if (_state == SignedOut) {
_connectionStatus = ConnectionValidator::Undefined;
_connectionErrors.clear();
} else if (oldState == SignedOut && _state == Disconnected) {
// If we stop being voluntarily signed-out, try to connect and
// auth right now!
Expand Down Expand Up @@ -297,8 +296,9 @@
return;
}

auto *conValidator = new ConnectionValidator(AccountStatePtr(this));
auto *conValidator = new ConnectionValidator(AccountStatePtr(this), _connectionErrors);

Check warning on line 299 in src/gui/accountstate.cpp

View workflow job for this annotation

GitHub Actions / build

src/gui/accountstate.cpp:299:11 [cppcoreguidelines-init-variables]

variable 'conValidator' is not initialized
_connectionValidator = conValidator;
_connectionErrors.clear();
connect(conValidator, &ConnectionValidator::connectionResult,
this, &AccountState::slotConnectionValidatorResult);
if (isConnected()) {
Expand Down
5 changes: 3 additions & 2 deletions src/gui/connectionvalidator.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*

Check notice on line 1 in src/gui/connectionvalidator.cpp

View workflow job for this annotation

GitHub Actions / build

Run clang-format on src/gui/connectionvalidator.cpp

File src/gui/connectionvalidator.cpp does not conform to Custom style guidelines. (lines 335)
* Copyright (C) by Klaas Freitag <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
Expand All @@ -12,7 +12,7 @@
* for more details.
*/

#include <QJsonDocument>

Check failure on line 15 in src/gui/connectionvalidator.cpp

View workflow job for this annotation

GitHub Actions / build

src/gui/connectionvalidator.cpp:15:10 [clang-diagnostic-error]

'QJsonDocument' file not found
#include <QJsonObject>
#include <QJsonArray>
#include <QLoggingCategory>
Expand All @@ -37,8 +37,9 @@
// This makes sure we get tried often enough without "ConnectionValidator already running"
static qint64 timeoutToUseMsec = qMax(1000, ConnectionValidator::DefaultCallingIntervalMsec - 5 * 1000);

ConnectionValidator::ConnectionValidator(AccountStatePtr accountState, QObject *parent)
ConnectionValidator::ConnectionValidator(AccountStatePtr accountState, const QStringList &previousErrors, QObject *parent)

Check warning on line 40 in src/gui/connectionvalidator.cpp

View workflow job for this annotation

GitHub Actions / build

src/gui/connectionvalidator.cpp:40:1 [cppcoreguidelines-pro-type-member-init]

constructor does not initialize these fields: , , , _previousErrors, _errors, _accountState, _account

Check warning on line 40 in src/gui/connectionvalidator.cpp

View workflow job for this annotation

GitHub Actions / build

src/gui/connectionvalidator.cpp:40:42 [bugprone-easily-swappable-parameters]

2 adjacent parameters of 'ConnectionValidator' of similar type are easily swapped by mistake
: QObject(parent)
, _previousErrors(previousErrors)
, _accountState(accountState)
, _account(accountState->account())
{
Expand Down Expand Up @@ -331,7 +332,7 @@
emit connectionResult(status, _errors);

// notify user of errors
if (!_errors.isEmpty()) {
if (!_errors.isEmpty() && _previousErrors != _errors) {
showSystrayErrorMessage();
}

Expand Down
5 changes: 4 additions & 1 deletion src/gui/connectionvalidator.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*

Check notice on line 1 in src/gui/connectionvalidator.h

View workflow job for this annotation

GitHub Actions / build

Run clang-format on src/gui/connectionvalidator.h

File src/gui/connectionvalidator.h does not conform to Custom style guidelines. (lines 82, 83)
* Copyright (C) by Klaas Freitag <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
Expand All @@ -15,7 +15,7 @@
#ifndef CONNECTIONVALIDATOR_H
#define CONNECTIONVALIDATOR_H

#include "owncloudlib.h"

Check failure on line 18 in src/gui/connectionvalidator.h

View workflow job for this annotation

GitHub Actions / build

src/gui/connectionvalidator.h:18:10 [clang-diagnostic-error]

'owncloudlib.h' file not found
#include <QObject>
#include <QStringList>
#include <QVariantMap>
Expand Down Expand Up @@ -79,7 +79,9 @@
{
Q_OBJECT
public:
explicit ConnectionValidator(AccountStatePtr accountState, QObject *parent = nullptr);
explicit ConnectionValidator(AccountStatePtr accountState,
const QStringList &previousErrors,
QObject *parent = nullptr);

enum Status {
Undefined,
Expand Down Expand Up @@ -142,6 +144,7 @@
*/
bool setAndCheckServerVersion(const QString &version);

const QStringList _previousErrors;
QStringList _errors;
AccountStatePtr _accountState;
AccountPtr _account;
Expand Down
Loading