public static void ExecuteLinq(Workspace workspace, ExpNode q, ResourceContainer container, bool bSingle, ExpNode altq) { System.Uri uri = new Uri(workspace.ServiceUri); WebDataCtxWrapper ctx = new WebDataCtxWrapper(uri); ctx.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; ctx.MergeOption = MergeOption.NoTracking; Type resType = container.BaseType.ClientClrType; ResolveClientType(workspace, ctx, resType); Type cType = typeof(WebDataCtxWrapper); MethodInfo mi = cType.GetMethod("CreateQuery", new Type[] { typeof(string) }); Type pType = container.BaseType.ClientClrType; MethodInfo miConstructed = mi.MakeGenericMethod(pType); string uri2 = container.Name; AstoriaTestLog.WriteLineIgnore(workspace.ServiceUri + "/" + uri2); object[] args = { uri2 }; object query = miConstructed.Invoke(ctx, args); LinqQueryBuilder lb = new LinqQueryBuilder(workspace, (IQueryable)query); string uri3 = lb.Build(q); AstoriaTestLog.WriteLineIgnore("Linq expression: " + lb.QueryExpression); //if (bSingle) //{ // var single = lb.QueryResultSingle; // VerifyLinqSingle(workspace, altq, single, container); //} //else //{ var queryable = lb.QueryResult; VerifyLinq(workspace, q, (IQueryable)queryable); //} }
public static IEnumerable ExecuteQuery(WebDataCtxWrapper ctx, Type pType, string sUri, string execType) { MethodInfo mi = null; MethodInfo miConstructed = null; object enumerable = null; object[] args = { new Uri(sUri, UriKind.Relative) }; Type cType = typeof(WebDataCtxWrapper); switch (execType) { case "sync": mi = cType.GetMethod("Execute", new Type[] { typeof(System.Uri) }); miConstructed = mi.MakeGenericMethod(pType); enumerable = miConstructed.Invoke(ctx, args); break; case "async": mi = cType.GetMethod("BeginExecute", BindingFlags.Public | BindingFlags.Instance, null, new Type[] { typeof(System.Uri), typeof(System.AsyncCallback), typeof(object) }, null); miConstructed = mi.MakeGenericMethod(pType); object asyncResult = miConstructed.Invoke(ctx, new object[] { new Uri(sUri, UriKind.Relative), null, null }); MethodInfo endexecute = cType.GetMethod("EndExecute", BindingFlags.Public | BindingFlags.Instance, null, new Type[] { typeof(IAsyncResult) }, null); MethodInfo miConstructed2 = endexecute.MakeGenericMethod(pType); enumerable = miConstructed2.Invoke(ctx, new object[] { asyncResult }); break; } return (IEnumerable)enumerable; }
public static void ResolveClientType(Workspace workspace, WebDataCtxWrapper ctx, Type resType) { if (workspace.Name == "Aruba") { switch (AstoriaTestProperties.DataLayerProviderKinds[0]) { case DataLayerProviderKind.Edm: ctx.ResolveType = delegate(string typeName) { return resType.Assembly.GetType("ArubaClient." + typeName.Substring("Aruba.".Length), true, false); }; ctx.ResolveName = delegate(Type type) { return "Aruba." + type.Name; }; break; case DataLayerProviderKind.LinqToSql: ctx.ResolveType = delegate(string typeName) { return resType.Assembly.GetType("ArubaClientLTS." + typeName.Substring("Aruba.".Length), true, false); }; ctx.ResolveName = delegate(Type type) { return "Aruba." + type.Name; }; break; } } }
public void VerifyClient(QueryModel qm) { WebDataCtxWrapper ctx = new WebDataCtxWrapper(new Uri(qm.Workspace.ServiceUri)); ctx.Credentials = CredentialCache.DefaultNetworkCredentials; try { UriQueryBuilder ub = new UriQueryBuilder(qm.Workspace, ""); string ruri = ub.Build(qm.QueryResult); string uriRel = ruri.Substring(ruri.LastIndexOf(".svc/") + 5); if ((ctx.BaseUri + "/" + uriRel).Length > 260) { return; } AstoriaTestLog.WriteLineIgnore(ctx.BaseUri + "/" + uriRel); ResolveClientType(qm.Workspace, ctx, qm.ResultType); object enumerable = ExecuteQuery(ctx, qm.ResultType, uriRel, "sync"); Verify(qm.Workspace, qm.QueryResult, (IEnumerable)enumerable, qm.ResType, null, qm.IsCount); } catch (Exception e) { AstoriaTestLog.FailAndContinue(e); } }
public UpdateModel(Workspace workspace, WebDataCtxWrapper context, object entity, ResourceContainer resContainer, UpdateModel parent) : base(workspace) { _workspace = workspace; this.ResContainer = resContainer; this.CurrentResource = entity; CurrentResourceSet = resContainer.Name; _ctx = context; RunningUnderLinkModel = true; }
public void CreateContext() { _context = new WebDataCtxWrapper(this.workSpace.ServiceRoot); _context.Credentials = CredentialCache.DefaultNetworkCredentials; AstoriaTestLog.WriteLineIgnore(this.workSpace.ServiceRoot.ToString()); //Source = SourceResourceType.CreateInstance( false ); //Target = TargetResourceType.CreateInstance( false ); }
public void CreateContext() { Context = new WebDataCtxWrapper(this.workSpace.ServiceRoot); Context.Credentials = CredentialCache.DefaultNetworkCredentials; AstoriaTestLog.WriteLineIgnore(this.workSpace.ServiceRoot.ToString()); }
public static void Verify(object entity, string uri, EntityStates state, Workspace w) { WebDataCtxWrapper ctx = new WebDataCtxWrapper(w.ServiceRoot); ctx.Credentials = CredentialCache.DefaultNetworkCredentials; MethodInfo mi = ctx.GetType().GetMethod("Execute", new Type[] { typeof(System.Uri) }); MethodInfo execMethod = mi.MakeGenericMethod(entity.GetType()); object results = execMethod.Invoke(ctx, new object[] { new Uri(uri, UriKind.RelativeOrAbsolute) }); switch (state) { case EntityStates.Unchanged: case EntityStates.Modified: case EntityStates.Added: //entity was updated IEnumerator r = ((IEnumerable)results).GetEnumerator(); while (r.MoveNext()) { VerifyResult(r.Current, entity); break; } break; case EntityStates.Deleted: AstoriaTestLog.WriteLineIgnore("deleted!"); break; } }