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

Remove OpProcessingController, use LoaderContainerTracker in propertyDDS tests #7784

Merged
merged 5 commits into from
Oct 8, 2021
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
8 changes: 8 additions & 0 deletions BREAKING.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@ There are a few steps you can take to write a good change note and avoid needing
- Provide guidance on how the change should be consumed if applicable, such as by specifying replacement APIs.
- Consider providing code examples as part of guidance for non-trivial changes.

## 0.50 Breaking changes
- [OpProcessingController removed](#OpProcessingController-removed)

### OpProcessingController removed
OpProcessingController has been deprecated for very long time. It's being removed in this release.
Please use LoaderContainerTracker instead (see https://github.com/microsoft/FluidFramework/pull/7784 as an example of changes required)
If you can't make this transition, you can always copy implementation of LoaderContainerTracker to your repo and maintain it. That said, it has bugs and tests using it are easily broken but subtle changes in reconnection logic, as evident from PRs #7753, #7393)

## 0.49 Breaking changes
- [Deprecated dirty document events and property removed from ContainerRuntime](#deprecated-dirty-document-events-and-property-removed-from-containerruntime)
- [Removed deltaManager.ts from @fluidframework/container-loader export](#deltamanager-removed-from-fluid-framework-export)
Expand Down
26 changes: 0 additions & 26 deletions api-report/test-utils.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@ import { IContainer } from '@fluidframework/container-definitions';
import { IContainerContext } from '@fluidframework/container-definitions';
import { IContainerRuntime } from '@fluidframework/container-runtime-definitions';
import { IContainerRuntimeOptions } from '@fluidframework/container-runtime';
import { IDeltaManager } from '@fluidframework/container-definitions';
import { IDetachedBlobStorage } from '@fluidframework/container-loader';
import { IDocumentMessage } from '@fluidframework/protocol-definitions';
import { IDocumentServiceFactory } from '@fluidframework/driver-definitions';
import { IFluidCodeDetails } from '@fluidframework/core-interfaces';
import { IFluidDataStoreChannel } from '@fluidframework/runtime-definitions';
Expand All @@ -36,7 +34,6 @@ import { IRequestHeader } from '@fluidframework/core-interfaces';
import { IResolvedUrl } from '@fluidframework/driver-definitions';
import { IResponse } from '@fluidframework/core-interfaces';
import { IRuntime } from '@fluidframework/container-definitions';
import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
import { ISharedMap } from '@fluidframework/map';
import { ITelemetryBaseLogger } from '@fluidframework/common-definitions';
import { ITestDriver } from '@fluidframework/test-driver-definitions';
Expand Down Expand Up @@ -81,18 +78,9 @@ export enum DataObjectFactoryType {
// @public (undocumented)
export const defaultTimeoutDurationMs = 250;

// @public (undocumented)
export type DeltaManager = IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;

// @public (undocumented)
export type fluidEntryPoint = SupportedExportInterfaces | IFluidModule;

// @public @deprecated (undocumented)
export interface IDeltaConnectionServerMonitor {
// (undocumented)
hasPendingWork(): Promise<boolean>;
}

// @public (undocumented)
export interface IOpProcessingController {
// (undocumented)
Expand Down Expand Up @@ -193,20 +181,6 @@ export class LocalCodeLoader implements ICodeLoader {
load(source: IFluidCodeDetails): Promise<IFluidModule>;
}

// @public @deprecated
export class OpProcessingController {
constructor(deltaConnectionServerMonitor?: IDeltaConnectionServerMonitor | undefined);
addDeltaManagers(...deltaManagers: DeltaManager[]): void;
// (undocumented)
get isProcessingControlled(): boolean;
pauseProcessing(...deltaMangers: DeltaManager[]): Promise<void>;
process(...deltaMangers: DeltaManager[]): Promise<void>;
processIncoming(...deltaMangers: DeltaManager[]): Promise<void>;
processOutgoing(...deltaMangers: DeltaManager[]): Promise<void>;
resumeProcessing(...deltaMangers: DeltaManager[]): void;
static yield(): Promise<void>;
}

// @public (undocumented)
export type SupportedExportInterfaces = Partial<IProvideRuntimeFactory & IProvideFluidDataStoreFactory & IProvideFluidDataStoreRegistry & IProvideFluidCodeDetailsComparer>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { IUrlResolver } from "@fluidframework/driver-definitions";
import {
createAndAttachContainer,
createLoader,
OpProcessingController,
LoaderContainerTracker,
ITestFluidObject,
TestFluidObjectFactory,
} from "@fluidframework/test-utils";
Expand All @@ -34,7 +34,7 @@ describe("PropertyTree", () => {

let deltaConnectionServer: ILocalDeltaConnectionServer;
let urlResolver: LocalResolver;
let opProcessingController: OpProcessingController;
let opProcessingController: LoaderContainerTracker;
let container1: IContainer;
let container2: IContainer;
let dataObject1: ITestFluidObject;
Expand All @@ -55,18 +55,21 @@ describe("PropertyTree", () => {

async function createContainer(): Promise<IContainer> {
const loader = createLocalLoader([[codeDetails, factory]], deltaConnectionServer, urlResolver);
opProcessingController.add(loader);
return createAndAttachContainer(codeDetails, loader, urlResolver.createCreateNewRequest(documentId));
}

async function loadContainer(): Promise<IContainer> {
const loader = createLocalLoader([[codeDetails, factory]], deltaConnectionServer, urlResolver);
opProcessingController.add(loader);
return loader.resolve({ url: documentLoadUrl });
}

describe("Local state", () => {
let propertyTree: SharedPropertyTree;

beforeEach(async () => {
opProcessingController = new LoaderContainerTracker();
deltaConnectionServer = LocalDeltaConnectionServer.create();
urlResolver = new LocalResolver();

Expand All @@ -79,9 +82,6 @@ describe("PropertyTree", () => {
container2 = await loadContainer();
dataObject2 = await requestFluidObject<ITestFluidObject>(container2, "default");
sharedPropertyTree2 = await dataObject2.getSharedObject<SharedPropertyTree>(propertyDdsId);

opProcessingController = new OpProcessingController();
opProcessingController.addDeltaManagers(container1.deltaManager, container2.deltaManager);
});

describe("APIs", () => {
Expand All @@ -106,7 +106,7 @@ describe("PropertyTree", () => {

sharedPropertyTree1.commit();

await opProcessingController.process(container1.deltaManager, container2.deltaManager);
await opProcessingController.ensureSynchronized();

expect((sharedPropertyTree2.root.get("test") as StringProperty).getValue()).to.equal("Magic");
});
Expand All @@ -122,7 +122,7 @@ describe("PropertyTree", () => {
sharedPropertyTree1.commit({someKey: "some data"});
expect(sharedPropertyTree1.activeCommit.metadata).to.deep.equal({someKey: "some data"});

await opProcessingController.process(container1.deltaManager, container2.deltaManager);
await opProcessingController.ensureSynchronized();

expect((sharedPropertyTree2.root.get("test") as StringProperty).getValue()).to.equal("Magic");
expect(sharedPropertyTree2.activeCommit.metadata).to.deep.equal({someKey: "some data"});
Expand All @@ -133,7 +133,7 @@ describe("PropertyTree", () => {
sharedPropertyTree1.commit({someKey: "some data"});
expect(sharedPropertyTree1.activeCommit.metadata).to.deep.equal({someKey: "some data"});

await opProcessingController.process(container1.deltaManager, container2.deltaManager);
await opProcessingController.ensureSynchronized();
expect(sharedPropertyTree2.activeCommit.metadata).to.deep.equal({someKey: "some data"});
});

Expand All @@ -142,7 +142,7 @@ describe("PropertyTree", () => {
sharedPropertyTree1.commit({someKey: "some data"}, false);
expect(sharedPropertyTree1.activeCommit).to.equal(undefined);

await opProcessingController.process(container1.deltaManager, container2.deltaManager);
await opProcessingController.ensureSynchronized();
expect(sharedPropertyTree2.activeCommit).to.equal(undefined);
});

Expand All @@ -151,7 +151,7 @@ describe("PropertyTree", () => {
sharedPropertyTree1.commit({someKey: "some data"}, true);
expect(sharedPropertyTree1.activeCommit.metadata).to.deep.equal({someKey: "some data"});

await opProcessingController.process(container1.deltaManager, container2.deltaManager);
await opProcessingController.ensureSynchronized();
expect(sharedPropertyTree2.activeCommit.metadata).to.deep.equal({someKey: "some data"});
});

Expand All @@ -160,7 +160,7 @@ describe("PropertyTree", () => {

sharedPropertyTree1.commit();

await opProcessingController.process(container1.deltaManager, container2.deltaManager);
await opProcessingController.ensureSynchronized();
expect(sharedPropertyTree2.remoteChanges.length).to.equal(0);
});

Expand All @@ -169,7 +169,7 @@ describe("PropertyTree", () => {

sharedPropertyTree1.commit(true);

await opProcessingController.process(container1.deltaManager, container2.deltaManager);
await opProcessingController.ensureSynchronized();
expect(sharedPropertyTree2.remoteChanges.length).to.equal(1);
expect(_.isEmpty(_.last(sharedPropertyTree2.remoteChanges)?.changeSet)).to.equal(true);
});
Expand All @@ -183,13 +183,13 @@ describe("PropertyTree", () => {

sharedPropertyTree1.commit();

await opProcessingController.process(container1.deltaManager, container2.deltaManager);
await opProcessingController.ensureSynchronized();

expect(sharedPropertyTree2.root.get("test")).to.equal(undefined);

sharedPropertyTree1.stopTransmission(false);

await opProcessingController.process(container1.deltaManager, container2.deltaManager);
await opProcessingController.ensureSynchronized();

expect((sharedPropertyTree2.root.get("test") as StringProperty).getValue()).to.equal("Magic");
});
Expand Down Expand Up @@ -251,7 +251,7 @@ describe("PropertyTree", () => {
await opProcessingController.pauseProcessing();
sharedPropertyTree1.root.insert("test", PropertyFactory.create("String", undefined, "Magic"));
sharedPropertyTree1.commit();
await opProcessingController.process(container1.deltaManager, container2.deltaManager);
await opProcessingController.ensureSynchronized();
const result = sharedPropertyTree1.getRebasedChanges("", "");
expect(result.length).to.equal(0);
});
Expand Down
Loading