Skip to content
Snippets Groups Projects
Verified Commit fb0794f8 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

Merge branch 'dev' into f-role

parents 69ae61ae 3e34abaa
Branches
No related tags found
No related merge requests found
Pipeline #25306 passed
Pipeline: caosdb-cppinttest

#25309

    # #
    # This file is a part of the CaosDB Project. # This file is a part of the CaosDB Project.
    # #
    # Copyright (C) 2019-2021 Indiscale GmbH <info@indiscale.com> # Copyright (C) 2019-2022 Indiscale GmbH <info@indiscale.com>
    # Copyright (C) 2019 Henrik tom Wörden <h.tomwoerden@indiscale.com> # Copyright (C) 2019 Henrik tom Wörden <h.tomwoerden@indiscale.com>
    # Copyright (C) 2020 Daniel Hornung <d.hornung@indiscale.com> # Copyright (C) 2020-2022 Daniel Hornung <d.hornung@indiscale.com>
    # Copyright (C) 2021 Timm Fitschen <t.fitschen@indiscale.com> # Copyright (C) 2021 Timm Fitschen <t.fitschen@indiscale.com>
    # #
    # This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
    ...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
    variables: variables:
    CPPLIB_REGISTRY_IMAGE: $CI_REGISTRY/caosdb/src/caosdb-cpplib/testenv:$CI_COMMIT_REF_NAME CPPLIB_REGISTRY_IMAGE: $CI_REGISTRY/caosdb/src/caosdb-cpplib/testenv:$CI_COMMIT_REF_NAME
    CPPINTTEST_PIPELINE: https://gitlab.indiscale.com/api/v4/projects/111/trigger/pipeline
    CPPINTTEST_BRANCHES: https://gitlab.indiscale.com/api/v4/projects/111/repository/branches CPPINTTEST_BRANCHES: https://gitlab.indiscale.com/api/v4/projects/111/repository/branches
    GIT_SUBMODULE_STRATEGY: normal GIT_SUBMODULE_STRATEGY: normal
    ...@@ -32,6 +31,9 @@ variables: ...@@ -32,6 +31,9 @@ variables:
    TRIGGERED_BY_REF: $CI_COMMIT_REF_NAME TRIGGERED_BY_REF: $CI_COMMIT_REF_NAME
    TRIGGERED_BY_HASH: $CI_COMMIT_SHORT_SHA TRIGGERED_BY_HASH: $CI_COMMIT_SHORT_SHA
    # For storing cross-job environment variables
    DOTENV: custom.env
    image: $CPPLIB_REGISTRY_IMAGE image: $CPPLIB_REGISTRY_IMAGE
    ...@@ -92,12 +94,11 @@ test: ...@@ -92,12 +94,11 @@ test:
    - cmake --build . -j --target cxxcaosdbcli - cmake --build . -j --target cxxcaosdbcli
    # - cmake --build . -j --target ccaosdbcli # Disabled until it compiles again. # - cmake --build . -j --target ccaosdbcli # Disabled until it compiles again.
    # trigger the integration tests trigger_prepare:
    trigger_inttest: # Calculate the branch name
    tags: [ docker ] tags: [ docker ]
    stage: deploy stage: deploy
    script: script:
    ## Determine the cppinttest branch... ## Determine the cppinttest branch...
    # ... use an f-branch if posible... # ... use an f-branch if posible...
    - F_BRANCH=dev - F_BRANCH=dev
    ...@@ -122,18 +123,36 @@ trigger_inttest: ...@@ -122,18 +123,36 @@ trigger_inttest:
    # ... and fall-back to dev # ... and fall-back to dev
    - CPPINT_REF=${CPPINT_REF:-dev} - CPPINT_REF=${CPPINT_REF:-dev}
    - echo "Triggering caosdb-cppinttest@${CPPINT_REF} (F_BRANCH=$F_BRANCH)" # Write to dotenv
    - curl -w "%{stderr}HTTPCODE=%{http_code}" -X POST - echo "CPPINT_REF=${CPPINT_REF}" >> "$DOTENV"
    -F token=$CI_JOB_TOKEN - echo "F_BRANCH=${F_BRANCH}" >> "$DOTENV"
    -F "variables[TRIGGERED_BY_REPO]=$TRIGGERED_BY_REPO" - cat "$DOTENV"
    -F "variables[TRIGGERED_BY_REF]=$TRIGGERED_BY_REF" artifacts:
    -F "variables[TRIGGERED_BY_HASH]=$TRIGGERED_BY_HASH" # this special artifact will be loaded in the next job and make the environment variables available
    -F "variables[CPPLIB_REGISTRY_IMAGE]=$CPPLIB_REGISTRY_IMAGE" reports:
    -F "variables[F_BRANCH]=${F_BRANCH}" dotenv: "$DOTENV"
    -F ref=${CPPINT_REF} $CPPINTTEST_PIPELINE 2>HTTPCODE expire_in: 1 day
    # fail if the request failed
    - grep -c "HTTPCODE=2" HTTPCODE # trigger the integration tests
    trigger_inttest:
    stage: deploy
    needs: [ trigger_prepare ]
    inherit:
    variables:
    # List the variables that shall be inherited, which also means they will override any equally
    # named varibles in child pipelines.
    - TRIGGERED_BY_REPO
    - TRIGGERED_BY_REF
    - TRIGGERED_BY_HASH
    - CPPLIB_REGISTRY_IMAGE
    variables:
    # dotenv variables must be set again here.
    F_BRANCH: $F_BRANCH
    trigger:
    project: caosdb/src/caosdb-cppinttest
    branch: $CPPINT_REF
    strategy: depend
    # Build the sphinx documentation and make it ready for deployment by Gitlab Pages # Build the sphinx documentation and make it ready for deployment by Gitlab Pages
    # Special job for serving a static website. See https://docs.gitlab.com/ee/ci/yaml/README.html#pages # Special job for serving a static website. See https://docs.gitlab.com/ee/ci/yaml/README.html#pages
    ......
    ...@@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ...@@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
    ### Added ### Added
    * Simple `User` class and methods for user creation/retrieval/deletion.
    ### Changed ### Changed
    * Transaction::ExecuteAsynchronously is actually asynchronous now. * Transaction::ExecuteAsynchronously is actually asynchronous now.
    ......
    ...@@ -40,30 +40,96 @@ class Connection; ...@@ -40,30 +40,96 @@ class Connection;
    namespace caosdb::acm { namespace caosdb::acm {
    /**
    * The UserImpl class is the delegate of the User class. It hides the
    * implementation details from the clients.
    */
    class UserImpl; class UserImpl;
    /**
    * The User class is a delegator. The actual data is stored in a wrapped
    * UserImpl object.
    */
    class User { class User {
    public: public:
    /**
    * Default constructor.
    *
    * Initialize a user without any name, realm, password...
    */
    User(); User();
    /**
    * Constructor. Initialize a user in the given realm with the given name.
    */
    explicit User(std::string realm, std::string name); explicit User(std::string realm, std::string name);
    /**
    * Constructor. Initialize a user with the given name.
    */
    explicit User(std::string name); explicit User(std::string name);
    explicit User(std::unique_ptr<UserImpl> wrapped); /**
    * Copy constructor.
    */
    User(const User &user); User(const User &user);
    /**
    * Move constructor.
    *
    * The moved-from user is empty, but still usable.
    */
    User(User &&user) noexcept; User(User &&user) noexcept;
    /**
    * Copy assignment.
    */
    auto operator=(const User &user) -> User &; auto operator=(const User &user) -> User &;
    /**
    * Move assignment.
    *
    * The moved-from user is empty, but still usable.
    */
    auto operator=(User &&user) noexcept -> User &; auto operator=(User &&user) noexcept -> User &;
    /**
    * Dtor.
    */
    ~User(); ~User();
    /**
    * Return a string representation of this user.
    */
    auto ToString() const -> std::string; auto ToString() const -> std::string;
    /**
    * Return the name of this user or the empty string.
    */
    [[nodiscard]] auto GetName() const -> const std::string &; [[nodiscard]] auto GetName() const -> const std::string &;
    /**
    * Set the name of this user.
    */
    auto SetName(const std::string &name) -> void; auto SetName(const std::string &name) -> void;
    /**
    * Return the realm of this user or the empty.
    */
    [[nodiscard]] auto GetRealm() const -> const std::string &; [[nodiscard]] auto GetRealm() const -> const std::string &;
    /**
    * Set the realm of this user.
    */
    auto SetRealm(const std::string &realm) -> void; auto SetRealm(const std::string &realm) -> void;
    /**
    * Return the password of this user or the empty string.
    */
    [[nodiscard]] auto GetPassword() const -> const std::string &; [[nodiscard]] auto GetPassword() const -> const std::string &;
    /**
    * Set the password of this user.
    */
    auto SetPassword(const std::string &password) -> void; auto SetPassword(const std::string &password) -> void;
    friend class caosdb::connection::Connection; friend class caosdb::connection::Connection;
    private: private:
    /**
    * Constructor. Create a user object from the given UserImpl delegate.
    */
    explicit User(std::unique_ptr<UserImpl> wrapped);
    /**
    * The UserImpl delegate.
    */
    std::unique_ptr<UserImpl> wrapped; std::unique_ptr<UserImpl> wrapped;
    }; };
    ......
    ...@@ -100,8 +100,8 @@ bool UnaryRpcHandler::OnNext(bool ok) { ...@@ -100,8 +100,8 @@ bool UnaryRpcHandler::OnNext(bool ok) {
    void UnaryRpcHandler::Cancel() { void UnaryRpcHandler::Cancel() {
    state_ = CallState::CallComplete; state_ = CallState::CallComplete;
    call_context.TryCancel();
    transaction_status = TransactionStatus::CANCELLED(); transaction_status = TransactionStatus::CANCELLED();
    call_context.TryCancel();
    } }
    void UnaryRpcHandler::handleCallCompleteState() { void UnaryRpcHandler::handleCallCompleteState() {
    ......
    ...@@ -264,8 +264,8 @@ TEST(test_transaction, test_multiple_execute) { ...@@ -264,8 +264,8 @@ TEST(test_transaction, test_multiple_execute) {
    EXPECT_EQ(transaction->GetStatus().GetCode(), StatusCode::GO_ON); EXPECT_EQ(transaction->GetStatus().GetCode(), StatusCode::GO_ON);
    EXPECT_EQ(transaction->ExecuteAsynchronously(), StatusCode::EXECUTING); EXPECT_EQ(transaction->ExecuteAsynchronously(), StatusCode::EXECUTING);
    // EXPECT_EQ(transaction->ExecuteAsynchronously(), StatusCode::TRANSACTION_STATUS_ERROR); EXPECT_EQ(transaction->ExecuteAsynchronously(), StatusCode::TRANSACTION_STATUS_ERROR);
    // EXPECT_EQ(transaction->ExecuteAsynchronously(), StatusCode::TRANSACTION_STATUS_ERROR); EXPECT_EQ(transaction->ExecuteAsynchronously(), StatusCode::TRANSACTION_STATUS_ERROR);
    transaction->Cancel(); transaction->Cancel();
    } }
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Please register or to comment