Merge branch 'master' into fix-mongodb-canonical

This commit is contained in:
Mukundan Sundararajan 2022-03-16 09:06:40 +05:30 committed by GitHub
commit 9545d8204d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 141 additions and 0 deletions

46
.github/workflows/fossa.yml vendored Normal file
View File

@ -0,0 +1,46 @@
#
# Copyright 2021 The Dapr Authors
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: fossa
on:
push:
branches:
- master
- release-*
tags:
- v*
pull_request:
branches:
- master
- release-*
workflow_dispatch: {}
jobs:
fossa-scan:
if: github.repository_owner == 'dapr' # FOSSA is not intended to run on forks.
runs-on: ubuntu-latest
env:
FOSSA_API_KEY: b88e1f4287c3108c8751bf106fb46db6 # This is a push-only token that is safe to be exposed.
steps:
- name: "Checkout code"
uses: actions/checkout@v2
- name: "Run FOSSA Scan"
uses: fossas/fossa-action@main # Use a specific version if locking is preferred
with:
api-key: ${{ env.FOSSA_API_KEY }}
- name: "Run FOSSA Test"
uses: fossas/fossa-action@main # Use a specific version if locking is preferred
with:
api-key: ${{ env.FOSSA_API_KEY }}
run-tests: true

View File

@ -3,6 +3,7 @@
[![Build Status](https://github.com/dapr/components-contrib/workflows/components-contrib/badge.svg?event=push&branch=master)](https://github.com/dapr/components-contrib/actions?workflow=components-contrib)
[![Discord](https://img.shields.io/discord/778680217417809931)](https://discord.com/channels/778680217417809931/781589820128493598)
[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://github.com/dapr/components-contrib/blob/master/LICENSE)
[![FOSSA Status](https://app.fossa.com/api/projects/custom%2B162%2Fgithub.com%2Fdapr%2Fcomponents-contrib.svg?type=shield)](https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Fdapr%2Fcomponents-contrib?ref=badge_shield)
The purpose of Components Contrib is to provide open, community driven reusable components for building distributed applications.
These components are being used by the [Dapr](https://github.com/dapr/dapr) project, but are separate and decoupled from it.

View File

@ -462,6 +462,100 @@ func ConformanceTests(t *testing.T, props map[string]string, statestore state.St
}
}
})
t.Run("transaction-order", func(t *testing.T) {
// Arrange
firstKey := "key1"
firstValue := "value1"
secondKey := "key2"
secondValue := "value2"
thirdKey := "key3"
thirdValue := "value3"
// for CosmosDB
partitionMetadata := map[string]string{
"partitionKey": "myPartition",
}
// prerequisite: key1 should be present
err := statestore.Set(&state.SetRequest{
Key: firstKey,
Value: firstValue,
Metadata: partitionMetadata,
})
assert.NoError(t, err, "set request should be successful")
// prerequisite: key2 should not be present
err = statestore.Delete(&state.DeleteRequest{
Key: secondKey,
Metadata: partitionMetadata,
})
assert.NoError(t, err, "delete request should be successful")
// prerequisite: key3 should not be present
err = statestore.Delete(&state.DeleteRequest{
Key: thirdKey,
Metadata: partitionMetadata,
})
assert.NoError(t, err, "delete request should be successful")
operations := []state.TransactionalStateOperation{
// delete an item that already exists
{
Operation: state.Delete,
Request: state.DeleteRequest{
Key: firstKey,
},
},
// upsert a new item
{
Operation: state.Upsert,
Request: state.SetRequest{
Key: secondKey,
Value: secondValue,
},
},
// delete the item that was just upserted
{
Operation: state.Delete,
Request: state.DeleteRequest{
Key: secondKey,
},
},
// upsert a new item
{
Operation: state.Upsert,
Request: state.SetRequest{
Key: thirdKey,
Value: thirdValue,
},
},
}
expected := map[string][]byte{
firstKey: []byte(nil),
secondKey: []byte(nil),
thirdKey: []byte(fmt.Sprintf("\"%s\"", thirdValue)),
}
// Act
transactionStore := statestore.(state.TransactionalStore)
err = transactionStore.Multi(&state.TransactionalStateRequest{
Operations: operations,
Metadata: partitionMetadata,
})
assert.Nil(t, err)
// Assert
for k, v := range expected {
res, err := statestore.Get(&state.GetRequest{
Key: k,
Metadata: partitionMetadata,
})
assert.Nil(t, err)
assert.Equal(t, v, res.Data)
}
})
} else {
// Check if transactional feature is NOT listed
features := statestore.Features()